またはWHERE
に基づいて別の句を使用する方法を知りたいです。ステートメントの残りの部分は複雑であるため、私は. ただし、ケースは値にのみ使用されることは知っています。私の問題の簡単なバージョンを以下に複製しました。CASE
IF
CASE
基本的に、私は3つのテーブルを持っています。1 つ目は、マスター情報 (MasterTable) を含みます。2 番目には、マスター テーブル (Table1) に属する 1 対多のリレーションシップが含まれています。3 番目は、Table1 のどのレコードがこのインスタンスで使用されるかを示すセレクターのリストです。OrderNum よりも SubID を優先して、Table2 の最新のレコードが Table1 から選択されたものを駆動するようにします。
マスターテーブル | マスター ID、その他の情報
表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