繁体   English   中英

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

[英]Select Grouped Column Values Where Have Same Id In 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?

谢谢

您可以为此使用EXISTS

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

使用INNER JOIN

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

这是使用窗口函数的另一种方法:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM