首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用列作为在SQL中枢轴列的键

如何使用列作为在SQL中枢轴列的键
EN

Stack Overflow用户
提问于 2020-05-13 17:19:51
回答 2查看 79关注 0票数 2

我正试着把一个表旋转起来,并把一些子类别聚合起来。但是,当聚合时,子类别没有正确地连接起来。

示例表

代码语言:javascript
复制
| category | categorySub |
|----------|-------------|
| cat-1    | sub-1       |
| cat-1    | sub-2       |
| cat-1    | sub-3       |
| cat-2    | sub-4       |
| cat-2    | sub-5       |

实际输出

代码语言:javascript
复制
| category | categorySub                               |
|----------|-------------------------------------------|
| cat-1    | ["sub-1","sub-2","sub-3","sub-4","sub-5"] |
| cat-2    | ["sub-1","sub-2","sub-3","sub-4","sub-5"] |

期望输出

代码语言:javascript
复制
| category | categorySub               |
|----------|---------------------------|
| cat-1    | ["sub-1","sub-2","sub-3"] |
| cat-2    | ["sub-4","sub-5"]         |

查询

代码语言:javascript
复制
select 
[categoryMain] = [category],
[categorySub] = '["' + (select string_agg(categorySub, '","') from someTable where [categoryMain] = [category]) + '"]'
from someTable
group by [category]

如何引用类别或其别名来减少字符串聚合?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-13 17:36:18

您可以在STRING_AGG本身中使用它。

代码语言:javascript
复制
DECLARE @T Table(
cat Varchar(max),
SUB varchar(max))

Insert into @T Values ('cat-1','sub-1')
Insert into @T Values ('cat-1','sub-2')
Insert into @T Values ('cat-1','sub-3')
Insert into @T Values ('cat-2','sub-4')
Insert into @T Values ('cat-2','sub-5')

SELECT CAT AS CATEGORYMAIN, '["' + STRING_AGG(SUB, '","')+ '"]' AS SUB 
FROM @T GROUP BY [CAT]
票数 1
EN

Stack Overflow用户

发布于 2020-05-13 17:31:35

正如Martin建议的那样,我们可以直接使用string_agg,比如:

代码语言:javascript
复制
select 
[categoryMain] = [category],
[categorySub] = '["' + (select string_agg(categorySub, '","') + '"]'
from someTable
group by [category]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61780882

复制
相关文章

相似问题

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