web-dev-qa-db-fra.com

SQL: Comment faire la somme de deux valeurs de tables différentes

D'accord.

J'ai travaillé sur un projet au travail et, même si j'ai quelques connaissances en SQL, elles sont très rouillées.

L'un des scénarios à l'œuvre m'a laissé un certain nombre de tableaux avec des valeurs que je dois résumer. Ils ne sont pas liés non plus, mais l'ordre est le même pour toutes les tables.

En gros, j'aimerais prendre ces deux tables:

CASH TABLE  
London  540
France  240
Belgium 340

CHEQUE TABLE
London  780
France  490
Belgium 230

Pour obtenir une sortie comme celle-ci à alimenter une application graphique:

London  1320
France  730
Belgium 570

S'il vous plaît aider.

23
Uchenna Ebilah
select region,sum(number) total
from
(
    select region,number
    from cash_table
    union all
    select region,number
    from cheque_table
) t
group by region
48
Jonysuise
SELECT (SELECT SUM(London) FROM CASH) + (SELECT SUM(London) FROM CHEQUE) as result

'Et ainsi de suite.

16
vector

vous pouvez aussi essayer ceci dans sql-server !!

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

démo

ou essayez d'utiliser sum, union

select sum(total)  as mytotal,city
from
(
    select * from cash union
    select * from cheque
) as vij
group by city 
1
vhadalgi

Pour votre structure actuelle, vous pouvez également essayer ce qui suit:

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

Je pense que je préfère une union entre les deux tables et un groupe sur le nom du pays, comme mentionné ci-dessus.

Mais je recommanderais également de normaliser vos tables. Idéalement, vous devriez avoir une table de pays, avec ID et nom, et une table de paiements avec: CountryId (FK aux pays), Total, Type (cash/chèque)

0
Mathew Collins