この質問に似た問題があります: sql server 2008 case statement in where clause not working
同じドキュメント、SR、およびイベント テーブルがあります。
私の文書テーブル構造は次のようになります:
documentid int,
documenttype nvarchar(50),
relationid int,
document image,
docdate date
および SR テーブル構造:
SRId int,
CustomerId int, ( related to customer table)
SRdetail,
SRDate
およびイベント テーブル:
EventId int,
SRId int, (related to SR table)
Event,
EventDate
このクエリですべての行を適切に取得しました:
Select *
from documents d
left join SR s on d.relationid = s.SRId
left join Events e on d.relationid = e.EventId
しかし、私はろ過もしなければなりません。顧客ごとにすべてのドキュメントを表示する必要があるように。
だから私はこのようにクエリを実行しています:
Select *
from documents d
left join SR s on d.relationid = s.SRId
left join Events e on d.relationid = e.EventId
where (s.CustomerId = 123 or
e.SRId in (select SRId from SR where CustomerId = 123))
しかし、適切な出力が得られません。差分顧客のイベントとその顧客の SR のレコードの一部を表示します。適切にフィルタリングされていないことを意味します。
「or」の代わりに「and」を試してみましたが、「and」では一部のレコードのみが表示されます。
クエリのどこかが間違っていますか?
誰でも私を助けてもらえますか?