2017-08-25 89 views
3

假设条件我有一个表如下:获取ID,如果表中有一个或多个行存在

ID | Account| Status 
---+--------+------- 
1 | acct1 | A 
1 | acct2 | S 
1 | acct3 | C 
2 | acct4 | C 
2 | acct5 | C 
3 | acct6 | A 
3 | acct7 | C 
4 | acct8 | C 
4 | acct9 | C 
4 | acct10 | C 

条件:返回ID,如果帐户没有任何“A”和“S”状态。

对于这种情况,我只想要返回ID'2'和'4'。

回答

3

你可以使用HAVING和条件SUM

SELECT ID 
FROM tab 
GROUP BY ID 
HAVING SUM(CASE WHEN Status IN ('A', 'S') THEN 1 ELSE 0 END) = 0 
0

首先选择ID哪个记录不具有 'A' 和 'S'。然后得到明显的记录:

Select distinct(ID) as ID 
from table_name where id not in 
( 
select ID from table_name where status in('A', 'S') 
) 
相关问题