首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL Server使用SUM连接到新列

SQL Server使用SUM连接到新列
EN

Stack Overflow用户
提问于 2019-11-14 16:04:58
回答 1查看 49关注 0票数 0

请考虑以下示例数据:

代码语言:javascript
复制
Part Loc Qty
A A-1 10
A A-5 15
A B-4 7
B B-5 10
B B-6 15

我可以很容易地查询到每个零件的位置数量:

代码语言:javascript
复制
select
    pt.Part
    ,lc.Loc
    ,lc.LocQty Qty
from
    Part pt
left join
    Loc lc
on
    pt.Part = lc.Part

我也可以像这样对这些位置求和:

代码语言:javascript
复制
select
    pt.Part
    ,sum(lc.LocQty) TotalQty
from
    Part pt
left join
    Loc lc
on
    pt.Part = lc.Part
group by
    pt.Part

我现在要做的是连接到一个新的列中,部件出现的每个位置,如下所示:

代码语言:javascript
复制
Part TotalQty InLocations
A 32 A-1, A-5, B-4
B 25 B-5, B-6

对此最好的方法是什么?

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2019-11-14 16:32:14

SQL SERVER取代了GROUP_CONCAT()STRING_AGG().But STRING_AGG()在SQL Server 2017版本中引入的,你必须使用STUFFFor XML PATH的组合才能得到结果。

代码语言:javascript
复制
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.PART
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58852007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档