选择在SQL Server中具有相同ID的分组列值

时间:2014-10-25 19:36:53

标签: sql sql-server

我有一张这样的桌子。

表1

   id         Code
   -----------------
   1          N188
   1          N1Z2
   1          N222
   2          N189
   2          N1Z2
   2          N1Z3
   3          N188
   3          A123
   3          B321
   4          N188
   4          A333
   4          B444

我想选择id和代码只有代码N188。结果应该是这样的:

表2

 id         Code
 ---------------
 1          N188
 1          N1Z2
 1          N222
 3          N188
 3          A123
 3          B321
 4          N188
 4          A333
 4          B444

如何在SQL Server中为此编写SQL?

由于

3 个答案:

答案 0 :(得分:0)

您可以使用EXISTS

SELECT id, code
FROM table1 t
WHERE EXISTS (
    SELECT 1
    FROM table1 t2
    WHERE t.id = t2.id
        AND t2.Code = 'N188'
)

答案 1 :(得分:0)

使用INNER JOIN

SELECT *
FROM   tablename A
       JOIN (SELECT id
             FROM   tablename
             WHERE  code = 'N188') B
         ON a.id = b.id 

答案 2 :(得分:0)

以下是使用窗口函数的替代方法:

select id, code
from (select t.*,
             sum(case when code = 'N188' then 1 else 0 end) over (partition by id) as cnt_n188
      from table t
     ) t
where cnt_n188 > 0;