私は以下のような構造を持っています:
cid status
1 T
2 T
1 T
1 T
2 T
3 X
3 T
5 T
すべてのステータスが「T」cid
である場所を取得する方法。
X
応答は次のようにする必要があります(ステータスもあるため、3は省略されていることに注意してください)。
cid
1
2
5
私は以下のような構造を持っています:
cid status
1 T
2 T
1 T
1 T
2 T
3 X
3 T
5 T
すべてのステータスが「T」cid
である場所を取得する方法。
X
応答は次のようにする必要があります(ステータスもあるため、3は省略されていることに注意してください)。
cid
1
2
5
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
これがフィドルです:http ://sqlfiddle.com/#!3/9bed7/5/0