我有一個sql
聲明說如何避免在調用同一個SQL語句,並在
SELECT coalesce((Select sum(SomeNumber)
FROM Table
WHERE ID NOT IN (SELECT IDs...)), 0) MyFirstNumber,
coalesce((Select sum(SomeNumber2)
FROM Table
WHERE ID NOT IN (SELECT IDs...)), 0) MySecondNumber
我怎樣才能讓(SELECT IDs...)
查詢語句只能調用一次,上面的語句之前說。
我認爲這會是這樣的
DECLARE @MyIDs
SET @MyIDs = SELECT IDs FROM TABLE WHERE ...
SELECT coalesce((Select sum(SomeNumber)
FROM Table
WHERE ID NOT IN (@MyIDs)), 0) MyFirstNumber,
coalesce((Select sum(SomeNumber2)
FROM Table
WHERE ID NOT IN (@MyIDs)), 0) MySecondNumber
Select IDs是否返回單行或多行? – Ron 2013-03-11 18:39:10
在你的例子中,兩個'SUM'函數都是針對'table'完成的......我假設這是一個人爲的例子,而且你的實際查詢是在兩個*不同的*表上執行SUM? – 2013-03-11 18:40:21
您可以使用公用表表達式(CTE)來首先定義內部查詢:'WITH ctename AS()SELECT * FROM ctename'等等,以便您不必重複它。但至於執行計劃實際上會做什麼,你需要看看它。如果你希望首先將某個東西實際物化到一個表格中,唯一的方法就是自己去做。您已經完全忽略了這些內部查詢中的內容,因此很難知道它們是否需要關聯(您的外部查詢中也沒有FROM) – 2013-03-11 18:41:03