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 模拟 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

模拟器变得非常慢[重复]

模拟私有方法[重复]

如何访问iOS模拟器相机[重复]

我如何模拟慢速网络连接[重复]

使用 Mockito 进行模拟测试的含义是啥 [重复]

Xcode 11.2 缺少模拟器 [重复]