我有类似于我的这个问题的问题: 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 的记录。意味着它没有正确过滤。
我确实尝试使用'and'而不是'or',但使用'and'它只显示一些记录。
我在查询的某个地方错了吗?
谁能帮帮我吗 ?