在许多情况下串联行

时间:2019-03-26 09:04:48

标签: tsql

我需要连接行(尾)。例如,对于code_commande 001和code_article = 1,我需要在列表中连接所有具有这两个条件的尾巴。另一个示例,对于code_commande = 001和code_article = 2,我需要在列表中串联的所有作业都具有这两个条件,这是我需要串联的作业。这对所有人

code_commande   code_article    taille
001                  1          s         
001                  1          m         
001                  1          xl        
001                  1          x52       
001                  2          m         
001                  1          5566      
001                  2          x52       
001                  1          xl        
002                  1          s         
002                  2          m         
001                  3          xxl       
002                  3          xs        
001                  1          ml        
001                  1          xs32      

我需要为每个code_article的每个code_commande合并尾巴 结果的例子:

001            1             s,m,xl etcc

动态

我应该有一个表,将每个code_article的每个code_commande的(tail)分组为: 001 1 s,m,xl, 001 2 s,xl,l 002 1 xs,ettcc 我已经尝试过此查询,但是,它将所有行的所有(尾巴)连接起来 查询

选择[code_commande],[code_article],SUBSTRING( (      SELECT','+ [taille] AS'data()'          从[dbo]。[commande] FOR XML PATH('') ),2,9999)作为taille_commande 来自[dbo]。[commande] 按[code_article],[code_commande] desc

排序

1 个答案:

答案 0 :(得分:0)

如上所述,STRING_AGG()是您满足此要求的朋友。假设您的原始帖子包含您正在使用的架构,则简单的汇总查询将为您提供所需的结果。

select code_commande, code_article, STRING_AGG(taille, ',') as taille_commande
from dbo.commande
group by code_commande, code_article

STRING_AGG reference

请注意,这仅在SQL Server 2017+和azure中可用。要查看以前版本的可能解决方案,请参阅this duplicate