SQL SERVER T-SQL Zwischensumme und Summe nach Gruppe berechnen
Ich versuche, einer Tabelle eine Zwischensumme nach Gruppe und Summe hinzuzufügen. Ich habe die Daten anhand des folgenden Beispiels neu erstellt.
DECLARE @Sales TABLE(
CustomerName VARCHAR(20),
LegalID VARCHAR(20),
Employee VARCHAR(20),
DocDate DATE,
DocTotal Int,
DueTotal Int
)
INSERT INTO @Sales SELECT 'Jhon Titor','12345', 'Employee1','2015-09-01',1000,200
INSERT INTO @Sales SELECT 'Jhon Titor','12345', 'Employee1','2015-08-20',500,100
INSERT INTO @Sales SELECT 'Jhon Titor','12345', 'Employee1','2015-08-18',200,50
INSERT INTO @Sales SELECT 'Deli Armstrong','2345', 'Employee1','2015-09-17',2300,700
INSERT INTO @Sales SELECT 'Deli Armstrong','2345', 'Employee1','2015-09-11',5000,1000
INSERT INTO @Sales SELECT 'Ali Mezzu','6789', 'Employee1','2015-09-07',300,200
Auswahl@Sales
Ich muss die Kundenzwischensumme direkt unterhalb des Kundenvorkommens und die Gesamtsumme in der Endzeile der Tabelle wie folgt hinzufügen:
was ich bisher ausprobiert habe:
select
case
when GROUPING(CustomerName) = 1 and
GROUPING(Employee) = 1 and
GROUPING(DocDate) = 1 and
GROUPING(LegalID) = 0 then 'Total ' + CustomerName
when GROUPING(CustomerName) = 1 and
GROUPING(Employee) = 1 and
GROUPING(DocDate) =1 and
GROUPING(LegalID) = 1 then 'Total'
else CustomerName end as CustomerName,
LegalID, Employee,DocDate,
sum(DocTotal) as DocTotal,
sum(DueTotal) as DueTotal
From @Sales
group by LegalID, CustomerName,Employee,DocDate with rollup
Aber ich erhalte die Zwischensumme als Null, wo es sagen sollteTotal Jhon Titor
wie ich es in der Abfrage statisch gesetzt habe, wird es auch für jede nicht aggregierte Spalte (3) wiederholt,
Wie kann ich der oben dargestellten Tabelle eine Zwischensumme und eine Gesamtsumme hinzufügen?
Ich bin offen für die Verwendung einer Abfrage ohne ROLLUP-Operator. Ich denke, es ist möglich, Gewerkschaften zu verwenden, aber ich weiß nicht, wie ich anfangen soll.
ielen Dank, dass Sie sich mit meiner Frage befasst habe