String_agg 模拟 [重复]
Posted
技术标签:
【中文标题】String_agg 模拟 [重复]【英文标题】:String_agg simulation [duplicate] 【发布时间】:2020-11-12 13:42:30 【问题描述】:您好,我正在使用 SQL Server 2014,并且正在尝试使用文本列。我知道有一个新函数 STRING_AGG 可以使用分隔符连接多个列,但是 STRING_AGG 函数适用于 SQL Server 2017 及更高版本。请帮助我进行等效查询以实现此目的。附件是我的数据样子。我期待这样的结果
CASE_TABLE:
CASES
--------
CS03972981
CS03245184
CS04054200
CS02808145
CS01618494
CS03873177
COMMENTS_TABLE:
CASES COMMENTS
---------- ---------
CS03972981 ABC
CS03972981 ABC1
CS03972981 ABC2
CS03972981 ABC3
CS03245184 DEF
CS03245184 DEF1
CS03245184 DEF2
CS04054200 GHI
CS02808145 JKL
CS01618494 MNO
CS01618494 MNO1
CS01618494 MNO2
CS01618494 MNO3
CS01618494 MNO4
CS03873177 PQR
RESULT_TABLE:
CS03972981 ABC,ABC1,ABC2,ABC3
CS03245184 DEF,DEF1,DEF2
CS04054200 GHI
CS02808145 JKL
CS01618494 MNO,MNO1,MNO2,MNO3,MNO4
CS03873177 PQR
欣赏, 克里希纳。
【问题讨论】:
这能回答你的问题吗? string_agg for sql server pre 2017 【参考方案1】:你需要使用XML方法:
select c.*,
stuff( (select ',' + co.comments
from comments co
where co.cases = c.cases
for xml path('')
), 1, 1, ''
) as all_comments
from cases c;
【讨论】:
抱歉耽搁了,我尝试了同样的方法,但查询继续运行一个小时并取消。我知道 cmets 表很大。我尝试挑选几个案例,效果很好。 @VamsiKrishna 。 . .您需要comments(cases)
或comments(cases, comments)
的索引。以上是关于String_agg 模拟 [重复]的主要内容,如果未能解决你的问题,请参考以下文章