我的结构如下:
cid status
1 T
2 T
1 T
1 T
2 T
3 X
3 T
5 T
如何获取所有状态均为“T”的cid
。
响应必须是(请注意,省略 3,因为它也具有 X
状态):
cid
1
2
5
最佳答案
您可以将公共(public)表表达式与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
这是 fiddle :http://sqlfiddle.com/#!3/9bed7/5/0
关于t-sql - 组过滤t-sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11646517/