フィールドSR_ID、STATUS、TYPEを持つテーブルS_EVT_ACTがあります。この条件を検索するためのクエリ
TYPEにはNT、HLT、LSPを指定できますが、いくつかの値があります。異なるタイプと同じSR_IDを持つ複数のレコードが存在する可能性があります。そのSR_IDを選択したいのですが、TYPEでNTとHLTでなく、そのSR_IDの他のすべてのレコードのステータスが完了しています。不完全な状態のレコードが1つでもあっても、そのSR_IDを拒否したいと思います。
フィールドSR_ID、STATUS、TYPEを持つテーブルS_EVT_ACTがあります。この条件を検索するためのクエリ
TYPEにはNT、HLT、LSPを指定できますが、いくつかの値があります。異なるタイプと同じSR_IDを持つ複数のレコードが存在する可能性があります。そのSR_IDを選択したいのですが、TYPEでNTとHLTでなく、そのSR_IDの他のすべてのレコードのステータスが完了しています。不完全な状態のレコードが1つでもあっても、そのSR_IDを拒否したいと思います。
正しく取得した場合、このクエリは機能します。
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')
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')
そのような何か?
私は何を言いたいのですか?具体的にはすべてのレコードについてsridステータスは完全でなければなりません – vadiraj
このクエリは、「現在、不完全なステータスを持つ値を持つテーブルには、この値のためのすべてのsridsは完全です "。 – AndrewC
OP:別の言い方をすると、2番目のサブクエリは、ステータスが** **完了していない、特定のSR_IDの** no **行があるはずであると言っています。ダブルネガティブに注意して、それをあなたのステートメントと同等にします。 @AndyC:私はこれが彼らが欲しいものだと思う、+1 :) – onedaywhen
明確にする:実際に選択しているレコード(NOT NOT IN(NT、HLT)で) - そのレコードも*ステータス= '完了'ですか?そのレコードは不完全ですか? –
@Larry Lustig – onedaywhen
個別の「SR_ID」値だけを必要とするのか、条件が満たされている行全体を表示したいのですか? –