首页 > 解决方案 > 连接许多条件的行

问题描述

我需要连接行(taille)。例如,对于 code_commande 001 和 code_article=1 ,我需要在列表中连接所有具有这两个条件的 taille。另一个例子,对于code_commande=001 和code_article=2,我需要在一个列表中连接所有具有这两个条件的taille。这对所有人

code_commande code_article taille
001 1 秒         
001 1米         
001 1 件        
001 1 x52       
001 2米         
001 1 5566      
001 2 x52       
001 1 件        
002 1 秒         
002 2米         
001 3 超大号       
002 3个        
001 1 毫升        
001 1 xs32      

对于每个 code_article 结果示例,我需要为每个 code_commande 连接 taille:

001 1 s,m,xl 等

动态地

我应该有一个表,它为每个 code_article 的每个 code_commande 分组(taille),例如:001 1 s,m,xl,001 2 s,xl,l 002 1 xs,ettcc 我已经尝试过这个查询但是,它连接所有( taille) 对于查询的所有行

Select [code_commande],[code_article], SUBSTRING( ( SELECT ',' +[taille] AS 'data()' FROM [dbo].[commande] FOR XML PATH('') ), 2 , 9999) As taille_commande from [dbo].[commande] 按 [code_article],[code_commande]desc 排序

标签: tsql

解决方案


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

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

STRING_AGG 参考

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


推荐阅读