2009-10-16 6 views
3

J'utilise la clause Rollup et vous comment il montre l'agrégation à différents niveaux WITH NULL valeurs montrant différents niveaux de rollups par exemple. rollup(year,month,week) montrerait les sous-totaux à chaque niveau.TSQL rollup -return non null

Je veux le rouler en haut et pourtant vouloir voir seulement le plus haut niveau d'agrégation. donc je ne veux pas voir les valeurs null.

Une idée comment puis-je faire cela?

Cordialement Manjot

Répondre

6

Que voulez-vous dire par « seulement

niveau de aggragation plus haut Vous pouvez éviter les valeurs NULL en vérifiant si une colonne groupée, comme suit:?

SELECT  CASE WHEN Grouping(GroupID) = 1 THEN '#ALL' ELSE GroupID END AS   GroupID,   
       CASE WHEN Grouping(SubGroupID) = 1 THEN '#ALL' ELSE SubGroupID END AS SubGroupID, 
       Sum(Value) 
FROM   Table 
GROUP BY  GroupID, 
       SubGroupID 
WITH ROLLUP 

Il affichera #ALL installé de NULL

+0

merci beaucoup – Manjot

+0

@ # $% YA! Up vote sur cette une! Bonne solution! J'utilisais ISNULL mais ensuite Je rencontrais des problèmes avec quand la valeur réelle aurait dû être nulle! MERCI! – kralco626

+0

Mon problème était avec la colonne de valeur renvoyant null ... J'ai utilisé Sum (ISNULL (Value, 0)) pour corriger le problème. – BlackjacketMack