将2行合并为一行

时间:2018-08-07 14:22:28

标签: c# tsql sql-server-2012

我有这个查询:

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      

2 个答案:

答案 0 :(得分:4)

我们可以在此处使用聚合:

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);

Demo

请注意,如果GroupCode列确实是数字,那么将数据显示为0001并不能反映基础数据,因为SQL Server实际上只会处理这些值分别为0和1。在这种情况下,您可以略微修改我的上述查询。

答案 1 :(得分:0)

我是SQL Server的新手,请找到我对上述概念的回答,如果我错了,您可以使我正确。

Select mytable.* from mytable
inner join
(select   id  from mytable   group by id  having  count(id)>1) as table2 on mytable.id = table2.id