2013-06-12 161 views
1

我想知道如何在表中添加子查詢的結果。例如,我想在一個語句中添加以下兩個查詢。與主查詢相加的子查詢

SELECT SUM(A) - (SELECT SUM(B) FROM MyTable WHERE C<A)) 
FROM MyTable WHERE B>C; 

SELECT SUM(B) - (SELECT SUM(C) FROM MyTable WHERE D<F)) 
FROM MyTable WHERE B=C; 
+0

您能否提供真實的列名或某種假模式,以幫助我們理解爲什麼要這樣做?有時,與類似模型相關時,想出答案會更容易。爲什麼做這些奇怪的列比較和求和/減法是有意義的? – ErikE

回答

3

你可以從字面上只是把它們相加:

SELECT (SELECT SUM(A) - (SELECT SUM(B) FROM MyTable WHERE C<A)) 
         FROM MyTable WHERE B>C) 
     + 
     (SELECT SUM(B) - (SELECT SUM(C) FROM MyTable WHERE D<F)) 
          FROM MyTable WHERE B=C) 

同:

SELECT 5 + 3 

你也很可能使用一些CASE語句來做到這一點沒有子查詢,或使它至少更乾淨,如:

SELECT SUM(CASE WHEN B > C THEN A ELSE 0 END) - SUM(CASE WHEN C < A THEN B ELSE 0 END) 
     + 
     SUM(CASE WHEN B = C THEN B ELSE 0 END) - SUM(CASE WHEN D < F THEN C ELSE 0 END) 
FROM MyTable 
+0

太棒了!簡單而有幫助 –

+0

@Goat_CO。 。 。您從我的評論開始就修復了查詢。我的觀點是針對OP,接受一個不正確的答案,而不是你的回答。如果以前的版本是正確的,他/他應該解釋原因。 –

+0

嗯,我認爲唯一的編輯是措辭和添加CASE聲明部分。兩種方式都沒有問題。 –