首页 > 解决方案 > SQL Query - 如果另外 2 列相等,则合并以逗号分隔的 2 列结果

问题描述

我需要有关 SQL 查询的帮助才能执行以下操作-> 如果除 sku_num 之外的列结果相等,则 sku_num 将合并并用逗号分隔。此示例只有 2 个结果,但可能有 2 个以上的结果。提前致谢

我有的结果

![在此处输入图像描述][1]

我需要的结果

[![我需要的结果][2]][2]

SQL 代码

SELECT chassis_option.chassis_id          AS [Chassis ID], 
       chassis_option.module_id           AS [Module ID], 
       chassis_option.internal_name       AS [Option Internal Name], 
       chassis_option.global_option_id    AS [Global Option ID], 
       chassis_option.option_code         AS [Regional Option ID], 
       chassis_option.external_name       AS [Option External Name], 
       chassis_option.current_status_code AS [Option Status], 
       chassis_option_item.sku_num 
FROM   chassis_option 
       INNER JOIN chassis_option_item 
               ON chassis_option.chassis_id = chassis_option_item.chassis_id 
                  AND chassis_option.module_id = chassis_option_item.module_id 
                  AND chassis_option.option_code = 
                      chassis_option_item.option_code 
WHERE  ( chassis_option.global_option_id = N'GJP0LCK' ) 

标签: sqlmerge

解决方案


尝试这个:

SELECT <list all columns>, group_concat(sku_num) sku_num
FROM tableName
GROUP BY <list all columns>

SQL 服务器

SELECT 
    <list all columns>, 
    STRING_AGG(sku_num, ',') WITHIN GROUP (ORDER BY sku_num) AS [sku_num]
FROM 
    tableName
GROUP BY 
    <list all columns>

SELECTPS in和 in的列列表GROUP BY应该相同。


推荐阅读