Requête SQL à la somme des champs provenant de différentes tables
Je suis un humble programmeur qui déteste SQL ... 🙂 s'il vous Plaît m'aider avec cette question.
J'ai 4 tables, par exemple:
Table A:
Id Total
1 100
2 200
3 500
Table B
ExtId Amount
1 10
1 20
1 13
2 12
2 43
3 43
3 22
Table C
ExtId Amount
1 10
1 20
1 13
2 12
2 43
3 43
3 22
Table D
ExtId Amount
1 10
1 20
1 13
2 12
2 43
3 43
3 22
J'ai besoin de faire une sélection qui montre l'Id, le Total et la SOMME de la Quantité des champs de tableaux B, C et D, comme ce
Id Total AmountB AmountC AmountD
1 100 43 43 43
2 200 55 55 55
3 500 65 65 65
J'ai essayé avec une jointure interne des trois tables en les Identifiant et en faisant la somme du montant des champs, mais les résultats ne sont pas droite. Ici, c'est le mal requête:
SELECT dbo.A.Id, dbo.A.Total, SUM(dbo.B.Amount) AS Expr1, SUM(dbo.C.Amount) AS Expr2, SUM(dbo.D.Amount) AS Expr3
FROM dbo.A INNER JOIN
dbo.B ON dbo.A.Id = dbo.B.ExtId INNER JOIN
dbo.C ON dbo.A.Id = dbo.C.ExtId INNER JOIN
dbo.D ON dbo.A.Id = dbo.D.ExtId
GROUP BY dbo.A.Id, dbo.A.Total
Merci d'avance, c'est juste que je déteste SQL (ou SQL me déteste).
EDIT: j'ai eu une faute de frappe. Cette requête n'est pas de donner des résultats. Étendu l'exemple.
OriginalL'auteur Ignacio Soler Garcia | 2010-02-20
Vous devez vous connecter pour publier un commentaire.
Ou vous pouvez prendre avantage de l'utilisation de sous-requêtes:
OriginalL'auteur odiseh
À partir de votre description, cette requête devrait vous donner une erreur que vous utilisez de l'inexistant colonne
dbo.A.Amount
dans votre groupe. La modification de ce àdbo.A.Total
pourrait être ce dont vous avez besoin.Si vous avez besoin de tous les montants, puis essayez cette requête:
OriginalL'auteur a'r
Ce qui fonctionne bien
SELECT (SELECT SUM(Amount) FROM TableA) AS AmountA,
(SELECT SUM(Amount) FROM TableB) AS AmountB,
(SELECT SUM(Amount) FROM TableC) AS AmountC,
(SELECT SUM(Amount) FROM TableD) AS AmountD
OriginalL'auteur jahson kimulu
Cela pourrait aider d'autres utilisateurs.
OriginalL'auteur user3127648
Essayer ce code
SÉLECTIONNEZ Total=isnull((Select Sum(Isnull(Montant,0)) du tableau a),0)+isnull((Select Sum(isnull(Montant,0)) du tableau b),0)+isnull((Select Sum(isnull(Montant,0)) du tableau c),0)
OriginalL'auteur mitul