请考虑以下示例数据:
Part Loc Qty
A A-1 10
A A-5 15
A B-4 7
B B-5 10
B B-6 15我可以很容易地查询到每个零件的位置数量:
select
pt.Part
,lc.Loc
,lc.LocQty Qty
from
Part pt
left join
Loc lc
on
pt.Part = lc.Part我也可以像这样对这些位置求和:
select
pt.Part
,sum(lc.LocQty) TotalQty
from
Part pt
left join
Loc lc
on
pt.Part = lc.Part
group by
pt.Part我现在要做的是连接到一个新的列中,部件出现的每个位置,如下所示:
Part TotalQty InLocations
A 32 A-1, A-5, B-4
B 25 B-5, B-6对此最好的方法是什么?
非常感谢
发布于 2019-11-14 16:32:14
SQL SERVER取代了GROUP_CONCAT()是STRING_AGG().But STRING_AGG()在SQL Server 2017版本中引入的,你必须使用STUFF和For XML PATH的组合才能得到结果。
SELECT P.PART,SUM(QTY) AS TOTALQTY,
INLOCATIONS = STUFF(
(
SELECT ', ' + PA.LOC
FROM PART AS PA
WHERE PA.PART = P.PART
FOR XML PATH('')
), 1, 2, N''
)
FROM PART P
GROUP BY P.PARThttps://stackoverflow.com/questions/58852007
复制相似问题