35

我有许多表格,其中包含我需要总结的值。它们也没有链接,但所有表的顺序都是相同的。

基本上,我想拿这两张桌子:

CASH TABLE  
London  540
France  240
Belgium 340

CHEQUE TABLE
London  780
France  490
Belgium 230

要获得这样的输出以输入图形应用程序:

London  1320
France  730
Belgium 570
4

4 回答 4

66
select region,sum(number) total
from
(
    select region,number
    from cash_table
    union all
    select region,number
    from cheque_table
) t
group by region
于 2013-10-17T20:49:36.993 回答
25
SELECT (SELECT COALESCE(SUM(London), 0) FROM CASH) + (SELECT COALESCE(SUM(London), 0) FROM CHEQUE) as result

'等等等等。

“COALESCE 函数基本上说“返回第一个参数,除非它为 null,在这种情况下返回第二个参数”——在这些场景中非常方便。” 来源

于 2013-10-17T20:50:44.140 回答
3

你也可以在 sql-server 中试试这个!!

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

演示

或尝试使用 sum,union

select sum(total)  as mytotal,city
from
(
    select * from cash union
    select * from cheque
) as vij
group by city 
于 2013-10-18T04:38:40.910 回答
0

对于您当前的结构,您还可以尝试以下操作:

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

我想我更喜欢两个表之间的联合,以及上面提到的国家名称的分组。

但我也建议标准化你的表格。理想情况下,您应该有一个包含 Id 和 Name 的国家/地区表,以及一个包含以下内容的付款表:CountryId(FK 到国家/地区)、总计、类型(现金/支票)

于 2013-10-17T22:35:10.797 回答