首页 > 解决方案 > 将 2 行合并为一行

问题描述

我有这个查询:

Select ID, Groucode
from mytable

返回此结果:

ID  GroupCode
---------------
60  00        
60  01         
70  00         
80  00
80  01
90  00

我想要的是只显示带有“00”和“01”的行,如下所示:

ID   GroupCode
---------------
60    00  
60    01    
80    00
80    01      

标签: c#tsqlsql-server-2012

解决方案


我们可以在这里使用聚合:

WITH cte AS (
    SELECT ID
    FROM mytable
    WHERE GroupCode IN ('00', '01')
    GROUP BY ID
    HAVING COUNT(DISTINCT GroupCode) = 2
)

SELECT *
FROM mytable
WHERE ID IN (SELECT ID FROM cte);

演示

请注意,如果该GroupCode列确实是数字,那么将您的数据显示为00并且01不反映基础数据,因为 SQL Server 实际上只会将这些值视为 0 和 1。在这种情况下,您可以稍微修改我上面的查询。


推荐阅读