J'ai une requête d'union dans une procédure stockée.TSQL - Somme une requête union
que je voudrais faire est la somme d'une colonne et retourner cette requête au client
Comment puis-je faire cela?
Malcolm
J'ai une requête d'union dans une procédure stockée.TSQL - Somme une requête union
que je voudrais faire est la somme d'une colonne et retourner cette requête au client
Comment puis-je faire cela?
Malcolm
SELECT
othercol1, othercol2,
SUM(bar)
FROM
(
SELECT
othercol1, othercol2, bar
FROM
RT
UNION ALL
SELECT
othercol1, othercol2, bar
FROM
FM
) foo
GROUP BY
othercol1, othercol2
Est-il préférable dans ** n'importe quel cas ** de sélectionner 'othercol1, othercol2, SUM (bar)' plutôt que 'othercol1, othercol2, bar' de la sous-requête interne & SUM à nouveau dans la requête externe, par exemple. si les lignes renvoyées sont trop nombreuses, c'est-à-dire des milliers ou des millions? Ou SUM() dans la requête interne ne sera jamais mieux dans tous les cas? – Medorator
@buffer: il aurait 2 opérations globales dans la table interne, au lieu d'un agrégat externe. Ça pourrait être mieux. – gbn
SELECT SUM(MyCol) FROM
(
SELECT ... MyCol FROM Table1
UNION ALL
SELECT ... MyCol FROM Table2
)as tbl
Lorsque vous utilisez UNION vous courez le risque d'un résultat incorrect (« union » utilisé par lui-même = « union distincte » qui filtre dupliqué lignes), si vous faites une somme il est beaucoup plus probable que vous ayez besoin de toutes les lignes, par exemple UNION ALL –
@Used_By_Already - vous avez raison, cela devrait être UNION ALL bien sûr. Corrigée. – Joe
Je vous suggère de poster votre code TSQL –