2013-10-17 172 views
13

好的。SQL:如何從不同的表中總結兩個值

我已經在工作中加入了一個項目,雖然我有一些SQL技能,但它們很生鏽。

在工作場景中的一個場景給我留下了許多我需要總結的值的表格。它們也沒有鏈接,但所有表格中的順序都是相同的。

基本上,我想借此兩個表:

CASH TABLE 
London 540 
France 240 
Belgium 340 

CHEQUE TABLE 
London 780 
France 490 
Belgium 230 

爲了得到一個輸出像這樣送入一個圖形應用程序:

London 1320 
France 730 
Belgium 570 

請幫助。

+0

提示'UNION','GROUP BY'和'SUM'將是有益的。 – zero323

回答

34
select region,sum(number) total 
from 
(
    select region,number 
    from cash_table 
    union all 
    select region,number 
    from cheque_table 
) t 
group by region 
9
SELECT (SELECT SUM(London) FROM CASH) + (SELECT SUM(London) FROM CHEQUE) as result 

「等等等等。

+1

'London'是表格中的一個不是列的條目 –

+1

這樣,即使其中一個SUM爲NULL,整個「結果」也將爲null,因此這是最簡單的方法,但卻是最不可信的方式。 。 – TheCuBeMan

0

對於當前的結構,你也可以嘗試以下方法:

select cash.Country, cash.Value, cheque.Value, cash.Value + cheque.Value as [Total] 
from Cash 
join Cheque 
on cash.Country = cheque.Country 

我想我更喜歡一組兩個表之間的聯合,並通過國名如上所述。

但我也建議正常化您的表格。理想情況下,你將有一個國家名單,ID和名稱,以及付款表: CountryId(FK到國家),總計,類型(現金/支票)

1

你也可以在sql-server上試試這個! !

select a.city,a.total + b.total as mytotal from [dbo].[cash] a join [dbo].[cheque] b on a.city=b.city 

demo

,或者嘗試使用金額,工會

select sum(total) as mytotal,city 
from 
(
    select * from cash union 
    select * from cheque 
) as vij 
group by city 
相關問題