首页 > 解决方案 > 选择在不同行上具有 NBR 1 和 2 行的 ID

问题描述

我正在寻找编写 SQL 来返回行,其中 aVENDOR_ID有一行NBR_ID = 1和另一行NBR_ID = 2。在下面的示例中,SQL 将返回VENDOR_ID93309A 的数据,其中一行为NBR_ID1 ,另一行为NBR_ID2。

GROUP_ID     VENDOR_ID    NBR_ID
AUX          27           1
AUX          87188A       1
AUX          92481A       1
AUX          92482A       1
AUX          92527A       1
AUX          93309A       1
AUX          93309A       2
AUX          93328A       1

我编写了以下 SQL,但这并没有专门返回VENDOR_IDNBR_ID 为 1 的行和 NBR_ID 为 2 的另一行的 's。

SELECT GROUP_ID, VENDOR_ID, NBR_ID
FROM TEST_TABLE
WHERE NBR_ID IN (1,2)

如何更新为仅返回在不同行上VENDOR_ID有这些NBR_ID的?

标签: sqlsql-serversql-server-2014

解决方案


使用相关子查询

SELECT GROUP_ID,VENDOR_ID,NBR_ID
FROM TEST_TABLE a
WHERE exists(select 1 from TEST_TABLE b where a.GROUP_ID=b.group_id and 
a.VENDOR_ID=b.vendor_id and NBR_ID IN (1,2) 
having count(distinct nbr_id)=2) and NBR_ID IN (1,2) 

推荐阅读