2016-09-05 8 views
0

に対する結果=数は、私は構造SQL:各ID

ID STATUS 
1  FIRSTSTAT 
2  FIRSTSTAT 
3  FIRSTSTAT 
1  SECSTAT 
3  SECSTAT 
3  THIRDSTAT 
3  FOURTHSTAT 
3  FIFTHSTAT 

のこの種を持っている場合、私は彼がすべての以下のステータス(FIRSTSTAT、SECSTAT、THIRDSTAT)を持っているので、バック3を取得したい確認してください。私はそれをどうやって作ることができるか考えていますか?

他のステータスが存在するので明示的に指定してください。SELECT FROM WHERE = 'THIRDSTAT'は、3つのステータス(いずれか1つだけではありません)が必要です。

だから、それはSUMやそのようなものを計算する必要があると思います。

私は次のことを試してみましたが、もちろん、それは動作しません:

SELECT 
FROM 
WHERE 
AND 
AND 

答えて

3

異なるステータス値の数は常に3であることが知られている場合:

select id 
from tablename 
where status in ('FIRSTSTAT', 'SECSTAT', 'THIRDSTAT') 
group by id 
having count(distinct status) = 3 
+0

こんにちは、答えに感謝を:)。私は他のステータスが存在するので、これはうまくいかないと思います。ですから、明示的にFIRSTSTAT、SECSTAT、およびTHIRDSTATの名前を付ける必要があります。あなたは別の方法を知っていますか? –

+0

@YassinHajaj:最初のクエリの 'where where in(...) 'が必要で、興味のある3つのステータス値を表示します(ただし、あなたの質問で3つ以上のステータスあなたのサンプルデータに表示されています) –

+0

なぜ他のステータスが存在するだけではうまくいかないのですか?技術的な意味では、スクリプトは "作品"を作った..私は "働かないだろう"がどこから来ているのか分からない.. –