Query

選擇具有相同值的一列並檢查另一列的值

  • March 23, 2020

我有一個具有以下結構的表(為簡潔起見,省略了其餘列):

+------------+-------+
| Cust_ID    | Status|
+------------+-------+
| 312        | A     |
| 312        | D     |
| 312        | D     |
| 345        | A     |
| 345        | D     |
| 345        | A     |
| 678        | D     |
| 678        | D     |
| 678        | D     |
+------------+-------+

我們可以觀察到相同的 s在不同的行中Cust_ID有多個。Status現在我想選擇Cust_ID所有Status行都是s 的 s D。所以在上述情況下,Cust_ID 678應該列出。

有人可以幫我寫這樣的查詢嗎?

我只使用 T-SQL,但我不認為下面使用的任何內容都特定於 SSMS:

SELECT DISTINCT Cust_ID
FROM Tbl t
WHERE
   Status = 'D'
AND NOT EXISTS (SELECT * FROM Tbl WHERE Status <> 'D' AND Cust_ID = t.Cust_ID)
select cust_ID 
from table 
group by cust_ID  
having max(status) = 'd' 
and min(status) = 'd' 

引用自:https://dba.stackexchange.com/questions/146624