L'obtention de la somme de plusieurs colonnes de deux tables
Je veux obtenir la somme de plusieurs colonnes de 2 tables différentes (ces tables partagent la même structure).
Si je ne le considère un tableau, je voudrais écrire ce genre de requête:
SELECT MONTH_REF, SUM(amount1), SUM(amount2)
FROM T_FOO
WHERE seller = XXX
GROUP BY MONTH_REF;
Cependant, j'aimerais aussi travailler avec les données de la table T_BAR, et ensuite avoir un select
de requêtes qui retournent les colonnes suivantes:
- MONTH_REF
- SOMME(T_FOO.amount1) + SOMME(T_BAR.amount1)
- SOMME(T_FOO.amount2) + SOMME(T_BAR.amount2)
tout regroupées par la valeur de MONTH_REF
.
Noter qu'un record pour un MONTH_REF
peut être trouvé dans un tableau, mais pas dans l'autre table.
Dans ce cas, j'aimerais obtenir la somme de T_FOO.amount1 + 0
(ou 0 + T_BAR.amount1
).
Comment puis-je écrire ma requête SQL pour obtenir cette information?
Pour information, ma base de données Oracle 10g.
OriginalL'auteur Romain Linsolas | 2009-09-07
Vous devez vous connecter pour publier un commentaire.
Vous pouvez l'union de vos tables avant le group by (c'est sur Oracle, par la voie):
Vous pouvez aussi l'union la tables avec le vendeur dans le champ de filtre et par la suite (dans le cas où vous avez besoin de plus de logique avancée):
D'abord on est plus efficace parce que vous êtes la réduction du nombre de lignes plus tôt que lorsque vous déplacez le
WHERE
clause à l'extérieur de la sousSELECT
.Merci, j'ai utilisé la deuxième.
OriginalL'auteur Kobi
Avez-vous essayé d'utiliser un syndicat?
OriginalL'auteur Lieven Keersmaekers
Alternativement, une jointure externe doit également travailler:
OriginalL'auteur Ruffles
J'ai enfin obtenir ce travail à l'aide de la Lieven's réponse.
Voici le bon code (
amount1 = ...
ne fonctionne pas sur mon environnement, et il y a trop d';
dans la requête):OriginalL'auteur Romain Linsolas
Cette commande n'est pas complète ....
OriginalL'auteur sagar roy