首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用STRING_AGG将某些值分组为一行?

如何使用STRING_AGG将某些值分组为一行?
EN

Stack Overflow用户
提问于 2019-09-09 13:33:47
回答 2查看 560关注 0票数 0

当所有的柱子都是相同的,但只有一个的时候,我想把几个木条组合成一个。这就是一个例子:

代码语言:javascript
运行
复制
ID  |  Name  | CP  | Job
-----------------------------
1   |  Muse  | 13  | Job1
1   |  Muse  | 13  | Job2
1   |  Muse  | 13  | Job3
2   |  Tort  | 51  | Job4
2   |  Tort  | 51  | Job5

我想要:

代码语言:javascript
运行
复制
ID  |  Name  | CP  | Job
-----------------------------
1   |  Muse  | 13  | Job1, Job2, Job3
2   |  Tort  | 51  | Job4, Job5

我试图以这种方式使用STRING_AGG:

代码语言:javascript
运行
复制
SELECT ID, Name, CP, STRING_AGG(Job, ',')
FROM myTable
GROUP BY ID, Name, CP, Job
ORDER BY ID

我读过这样的文章:https://database.guide/how-to-return-query-results-as-a-comma-separated-list-in-sql-server/

谢谢你的帮忙

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-09 13:35:18

事实上,我自己才发现的.我不需要按职务分组:

代码语言:javascript
运行
复制
SELECT ID, Name, CP, STRING_AGG(Job, ',')
FROM myTable
GROUP BY ID, Name, CP
ORDER BY ID
票数 2
EN

Stack Overflow用户

发布于 2019-09-09 20:18:01

只是一个有趣的观察和一些关于使用STRING_AGG的知识。如果您需要按任何特定顺序返回新职务列中的项,则可以利用WITHIN GROUP

代码语言:javascript
运行
复制
-- Sample data with the inserts rearranged in random order
DECLARE @myTable TABLE 
(
  ID     INT,
  [Name] VARCHAR(100),
  CP     INT,
  Job    VARCHAR(100)
);

INSERT @myTable
VALUES
(1,'Muse',13,'Job3'),
(1,'Muse',13,'Job1'),
(1,'Muse',13,'Job2'),
(2,'Tort',51,'Job5'),
(2,'Tort',51,'Job4');

-- STRING_AGG ordering NOT guaranteed
SELECT ID, Name, CP, Job = STRING_AGG(Job, ',')
FROM @myTable
GROUP BY ID, Name, CP
ORDER BY ID;

-- STRING_AGG ordering IS guaranteed    
SELECT ID, Name, CP, job = STRING_AGG(Job, ',') WITHIN GROUP (ORDER BY Job)
FROM @myTable
GROUP BY ID, Name, CP
ORDER BY ID;

无序STRING_AGG结果:

代码语言:javascript
运行
复制
ID          Name        CP          Job
----------- ----------- ----------- ------------------
1           Muse        13          Job3,Job1,Job2
2           Tort        51          Job5,Job4

无序STRING_AGG结果:

代码语言:javascript
运行
复制
ID          Name        CP          job
----------- ----------- ----------- ------------------
1           Muse        13          Job1,Job2,Job3
2           Tort        51          Job4,Job5
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57855118

复制
相关文章

相似问题

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