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.
select region,sum(number) total
from
(
select region,number
from cash_table
union all
select region,number
from cheque_table
) t
group by region
SELECT (SELECT SUM(London) FROM CASH) + (SELECT SUM(London) FROM CHEQUE) as result
'Et ainsi de suite.
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
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
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)