tsql - 连接许多条件的行
问题描述
我需要连接行(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 排序
解决方案
如前所述,STRING_AGG()
是您满足此要求的朋友。假设您的原始帖子包含您正在使用的架构,一个简单的聚合查询将为您提供所需的结果。
select code_commande, code_article, STRING_AGG(taille, ',') as taille_commande
from dbo.commande
group by code_commande, code_article
请注意,这仅在 SQL Server 2017+ 和 azure 中可用。要查看以前版本的可能解决方案,请参阅此副本。
推荐阅读
- python - 如何将 tkinter 日历中的日期存储在变量中?
- tableau-api - 基于多个参数的 Tableau 筛选器?
- wpf - 如何创建两个版本的 MSIX 包 (QA\PROD) 并部署在同一台机器上?
- arrays - 拆分字符串并存储在C中的数组或指针中
- c# - 从对象的多个属性中获取最大值的 C# 或 Linq 函数?
- python - 在车辆检测中的视频帧上绘制垂直线
- python - 运行此程序时出现 FileNotFoundError
- postgresql - 如何从 char 类型列中修剪尾随空格
- sql-server - 在 SQL Server 上禁用 SSL/TLS 时连接到 Debian Linux 上的 SQL Server
- verilog - Verilog 编译器指令中的换行符何时重要?