Sum avec SQL Server RollUP - mais seulement le dernier résumé?
J'ai cette requête:
DECLARE @t TABLE(NAME NVARCHAR(MAX),datee date,val money)
insert INTO @t SELECT 'a','2012-01-02',100
insert INTO @t SELECT 'a','2012-01-02',100
insert INTO @t SELECT 'a','2012-01-03',100
insert INTO @t SELECT 'a','2012-01-05',100
insert INTO @t SELECT 'b','2012-01-06',200
insert INTO @t SELECT 'b','2012-01-07',200
insert INTO @t SELECT 'd','2012-01-07',400
insert INTO @t SELECT 'e','2012-01-09',500
insert INTO @t SELECT 'f','2012-01-12',600
SELECT Name,datee,SUM (val)
from @t GROUP BY NAME ,datee
actuellement le résultat est:
MAIS j'ai besoin d'ajouter sum
à la fin.
J'ai donc essayé avec un cumulatif:
SELECT Name,datee,SUM (val)
from @t GROUP BY NAME ,datee with ROLLUP
MAIS j'ai seulement besoin de la dernier somme totale de la ligne. Je n'ai pas besoin en rapport sum's
Alors, comment pouvez obtenir le désir résultat?
(Je ne peux pas changer le group by
clause de provoquer les autres en ont besoin aussi , je veux juste ajouter que la somme à la fin avec/sans cumulatif).
source d'informationauteur Royi Namir
Vous devez vous connecter pour publier un commentaire.
C'est possible avec
GROUPING SETS
essayez ceci:SQL Violon
Il est également possible avec
ROLLUP()
:WITH ROLLUP
ainsi queWITH CUBE
sont non-standard et obsolètes. (Voir Non Conforme aux normes ISO Syntaxe dans leGROUP BY
manuel.)Il convient de noter que
ROLLUP()
n'est pas pris en charge dans le niveau de compatibilité de moins de 90 dans SQL Server 2005 ou de moins de 100 dans SQL Server 2008+, tandis queGROUPING SETS()
est.Si vous voulez juste le total final, ne pouvez-vous pas simplement utiliser un
UNION ALL
:Voir SQL jouer avec la Démo
Ou vous pouvez utiliser un
WHERE
clause de filtrer les lignes avec lesnull
valeurs:Voir SQL jouer avec la Démo
Le résultat est:
Vous pouvez utiliser cette requête :