我當它是不是null這樣用子查詢選擇避免多次運行?
Select
Col_A
,Col_B
,Col_C
,CASE
WHEN (SELECT ...{a very complicated query}...) IS NOT NULL THEN 1
ELSE 0
END CASE AS Col_D
FROM
MyTable
產生Col_D的子查詢,返回一個整數。
我需要顯示Col_D的位,但我也需要顯示它返回的INT。通常情況下,我只是重寫子查詢並將其稱爲Col_E,但考慮到它的複雜性,我並不想真正運行它兩次。理想情況下,我會:
Select
Col_A
,Col_B
,Col_C
,(SELECT ...{a very complicated query}...) AS Col_E
,CASE
WHEN Col_E IS NOT NULL THEN 1
ELSE 0
END CASE AS Col_D
FROM
MyTable
我有任何選擇嗎? (MS SQL 2008)
編輯: 對不起 - 我應該提到的是,複雜的查詢包括基於我列的where子句,即
SELECT ...{a very complicated query}... WHERE X = Col_A AND Y = Col_B
我認爲要得到一個答案,你需要提供更多關於什麼是一個非常複雜的查詢的信息,以及它與查詢中其他列的關係。你可以用這些結果創建一個臨時表,然後用'JOIN'來代替使用'SELECT'的操作系統,然後在'JOINED'行運行你的'CASE'? –