我想知道如何使用WHERE
基于 a 的不同子句CASE
or IF
。我更喜欢 a CASE
,因为该语句的其余部分很复杂,而且我不喜欢这种复杂性在两个地方只有微小差异的想法。但是,我知道案例仅用于值。我在下面复制了我的问题的一个简单版本。
基本上,我有三张桌子。第一个包含主信息(MasterTable)。第二个包含属于主表(Table1)的一对多关系。第三个是选择器列表,指示要在此实例中使用 Table1 中的哪些记录。我希望 Table2 的最新记录驱动从 Table1 中选择的内容,优先考虑 SubID 而不是 OrderNum。
主表 | MasterID,其他信息
表1 | T1UniqueId、MasterID、SubID、Text、OrderNum
表2 | T2UniqueId、MasterID、SubID、OrderNum、日期
SELECT MasterID, OtherInfo, SubID
FROM MasterTable
OUTER APPLY(
SELECT TOP 1 SubID FROM Table1
WHERE Table1.MasterID=MasterTable.MasterID
CASE
WHEN
(
SELECT TOP 1 SubID FROM Table2
WHERE Table2.MasterID=MasterTable.MasterID
ORDER BY Date DESC
) Is NULL
THEN Table1.OrderNum=
(
SELECT TOP 1 OrderNum
FROM Table2
WHERE Table2.MasterId=MasterTable.MasterId
ORDER BY Date DESC
)
ELSE Table1.SubId=
(
SELECT TOP 1 SubId
FROM Table2
WHERE Table2.MasterId=MasterTable.MasterId
ORDER BY Date DESC
)
END
) SubData