我有一個查詢這是一個有點像這樣:返回一個值,即使在一個子查詢,其中返回空集
SELECT ISNULL(MyColumn, "Not Applicable") As MyColumn
FROM MyTable
WHERE SomeOtherColumn =
(SELECT AValue
FROM SomeOtherTable
WHERE SomeConditionHolds
)
如果MyColumn相關值具有的價值,我得到這個,如果它爲空,則會根據需要給出「不適用」。
但是,偶爾子查詢返回空集,在這種情況下,整個查詢也返回空集。我仍然希望它返回「不適用」。
我已經能夠做的最好的是添加到上面
UNION
SELECT 'Not Applicable' AS MyColumn
WHERE NOT EXISTS
(SELECT AValue
FROM SomeOtherTable
WHERE SomeConditionHolds
)
但這種感覺真的哈克和低效。我希望有人有一個更好的主意。
您可以運行先用結果去到一個臨時表或表變量選擇,然後檢查'@@ RowCount'。如果它爲零,則返回N/A行,否則返回臨時結果。 – HABO 2013-05-10 19:23:04
這一直停滯不前,上面的問題只是一個更大問題的一個步驟,我發現了一個完全不同的解決方案。然而,在這個過程中,我確實嘗試了回答中提到的兩種類型的連接,並且當子查詢部分返回空集時,它們仍然返回emtpy集合。所以我不覺得我可以接受任何答案。感謝您的嘗試。 – cobaltduck 2013-05-18 18:59:19