我的结构如下:
cid status
1 T
2 T
1 T
1 T
2 T
3 X
3 T
5 T
如何cid
所有状态为'T'。
响应必须是(注意3被省略,因为它还具有X
状态):
cid
1
2
5
答案 0 :(得分:4)
您可以使用具有ROW_NUMBER
功能的公用表表达式,该表达式类似于GROUP BY
:
WITH CTE AS(
SELECT CID, RN = ROW_NUMBER()OVER(PARTITION BY CID ORDER BY CID)
FROM tbl
WHERE NOT EXISTS(
SELECT NULL FROM tbl t2
WHERE t2.CID=tbl.CID
AND Status <> 'T'
)
)
SELECT CID FROM CTE
WHERE RN = 1