特定のSubId/WorkflowIdの組み合わせにレコードが存在するかどうかを確認したいのですがProcessCode = 10
、同じSubId/WorkflowId
組み合わせにProcessCode
20、30、および40の行があります。以下は、私がやろうとしていることの記述が不十分なバージョンです。よりエレガントなソリューションを望んでいます。このクエリは基本的に、ルールに違反しているものをすべて識別します。
IF EXISTS( SELECT * FROM @DataTable WHERE SubID = @SubId and WorkflowId = @WorkflowId and ProcessCode = 10)
AND (
NOT EXISTS( SELECT * FROM @DataTable WHERE SubID = @SubId and WorkflowId = @WorkflowId and ProcessCode = 20) or
NOT EXISTS( SELECT * FROM @DataTable WHERE SubId = @SubId and WorkflowId = @WorkflowId and ProcessCode = 30) or
NOT EXISTS( SELECT * FROM @DataTable WHERE SubID = @SubId and WorkflowId = @WorkflowId and ProcessCode = 40)
)