2013-10-17 144 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 
相关问题