2017-05-13 61 views
2

我有表T1和T2和T3 我的問題是,我想查詢在三下表總結3個coumns(進出和W)是135 和我使用這些代碼使用聯合查詢在三個不同的表中總結三列?

enter image description here

select sum(x.aa) from(
    SELECT SUM(t1.in)AS aa FROM t1 

    union all 
     SELECT SUM(t2.out) AS aa FROM t2 


union all 
     SELECT SUM(t3.w) AS aa FROM t3 
    ) as x 
group by x.aa 
+0

您的實際問題是什麼?爲什麼在查詢結尾處使用「GROUP BY」? –

+0

我想查詢總結三個coumns(進出出和w)在三個表中是135 –

回答

1

如果你想在一排的總和,那麼最簡單的方法是可能與union all分配:

SELECT (SELECT SUM(t1.in) FROM t1) as sum_in, 
     (SELECT SUM(t2.out) FROM t2) as sum_out, 
     (SELECT SUM(t3.w) AS aa FROM t3) as sum_w; 
+0

不錯,但如果我有一列null >>>結果爲空??? –

+0

@ m.mahmoud。 。 。不。聚合函數忽略NULL值。 –

+0

我嘗試這些代碼,並給我null resulte –

2

我不認爲你甚至需要使用UNION這裏。你可以總結在一起的三個子查詢爲每個表總和:

SELECT 
    (SELECT SUM(t1.in) FROM t1) + 
    (SELECT SUM(t2.out) FROM t2) + 
    (SELECT SUM(t3.w) FROM t3) AS the_sum; 

SUM()函數忽略NULL值,所以空不應該在上述三種資金的問題。但是,如果每個項目的總和爲NULL,那麼整個項目將是NULL。解決此問題的一種方法是使用COALESCE()

SELECT 
    (SELECT COALESCE(SUM(t1.in), 0) FROM t1) + 
    (SELECT COALESCE(SUM(t2.out), 0) FROM t2) + 
    (SELECT COALESCE(SUM(t3.w), 0) FROM t3) AS the_sum; 
+0

不錯,但如果我有一列null >>> result be null ??? –

+0

不錯,但如果我有三個表中有相同的值選擇花葯列 –

+0

我不明白這個新的要求。你能詳細說明嗎? –