2
我有以下查詢:簡化多個重複的情況下表達和「在哪裏」
SELECT CASE
WHEN @from < item.UpdatedOnCurr AND item.UpdatedOnCurr <= @till AND @till < item.UpdatedOnNext
THEN item.Id
ELSE '00000000-0000-0000-0000-000000000000'
END AS Id,
CASE
WHEN @from < item.UpdatedOnCurr AND item.UpdatedOnCurr <= @till AND @till < item.UpdatedOnNext
THEN item.PreviousId
ELSE item.Id
END AS PreviousId,
item.UUID,
CASE
WHEN @from < item.UpdatedOnCurr AND item.UpdatedOnCurr <= @till AND @till < item.UpdatedOnNext
THEN item.Json
ELSE NULL
END AS Json,
item.TableName,
item.PermissionId,
item.UpdatedOnCurr
FROM Computed item
WHERE item.Json IS NOT NULL AND (
(@from < item.UpdatedOnCurr AND item.UpdatedOnCurr <= @till AND @till < item.UpdatedOnNext)
OR (item.UpdatedOnCurr <= @from AND @from < item.UpdatedOnNext AND item.UpdatedOnNext <= @till)
);
而且我想簡化它,即所有那些多個CASE
表達式切割我的眼球了,所以我想重用@from < item.UpdatedOnCurr AND item.UpdatedOnCurr <= @till AND @till < item.UpdatedOnNext
檢查,以便它不會執行多次每個選定的行...
那麼你如何實現這一目標?
放入熱膨脹係數,計算的情況下,一旦謂詞和過濾CTE內,使用簡單的情況下,在外部查詢 –
你可以寫一個函數,只是調用 – AntDC
這是CASE表達式! (不是情況說明...) – jarlh