2011-09-16 15 views
0

フィールドSR_ID、STATUS、TYPEを持つテーブルS_EVT_ACTがあります。この条件を検索するためのクエリ

TYPEにはNT、HLT、LSPを指定できますが、いくつかの値があります。異なるタイプと同じSR_IDを持つ複数のレコードが存在する可能性があります。そのSR_IDを選択したいのですが、TYPEでNTとHLTでなく、そのSR_IDの他のすべてのレコードのステータスが完了しています。不完全な状態のレコードが1つでもあっても、そのSR_IDを拒否したいと思います。

+0

明確にする:実際に選択しているレコード(NOT NOT IN(NT、HLT)で) - そのレコードも*ステータス= '完了'ですか?そのレコードは不完全ですか? –

+0

@Larry Lustig – onedaywhen

+0

個別の「SR_ID」値だけを必要とするのか、条件が満たされている行全体を表示したいのですか? –

答えて

0

正しく取得した場合、このクエリは機能します。

select [SR_ID],[STATUS],[TYPE] 
from S_EVT_ACT S 
where 1=1 
and S.[TYPE] not in ('NT','HLT') 
and S.[SR_ID] not in (select distinct(se.[SR_ID]) from S_EVT_ACT se where se.[STATUS] <> 'completed') 
+0

私は言ったように、同じsridに対して複数のレコードが存在する可能性がありますが、状況は異なる可能性があります。すべてのレコードstat私たちは完全です。 – vadiraj

+0

不完全なSR_IDを含まないようにクエリが変更されました。 – denolk

3
SELECT SR_ID,STATUS,TYPE FROM S_EVT_ACT 
WHERE TYPE NOT IN ('NT', 'HLT') 
AND SR_ID NOT IN (SELECT SR_ID FROM S_EVT_ACT WHERE STATUS <> 'Complete') 

そのような何か?

+0

私は何を言いたいのですか?具体的にはすべてのレコードについてsridステータスは完全でなければなりません – vadiraj

+0

このクエリは、「現在、不完全なステータスを持つ値を持つテーブルには、この値のためのすべてのsridsは完全です "。 – AndrewC

+0

OP:別の言い方をすると、2番目のサブクエリは、ステータスが** **完了していない、特定のSR_IDの** no **行があるはずであると言っています。ダブルネガティブに注意して、それをあなたのステートメントと同等にします。 @AndyC:私はこれが彼らが欲しいものだと思う、+1 :) – onedaywhen

関連する問題