2

私は以下のような構造を持っています:

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
4

1 に答える 1

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

これがフィドルです:http ://sqlfiddle.com/#!3/9bed7/5/0

于 2012-07-25T09:22:59.297 に答える