2016-03-23 11 views
1

Mein SQL-Typ ist auf einem langen Urlaub. Ich weiß genug, um gefährlich zu sein. Ich habe Tische, an denen ich verschiedene Standorte finde, die von einem Gebiet und einem Distrikt und potentiellem Geld und eingenommenem Geld getrennt sind. Spalten von Interesse sind Bereich/Bezirk/Potential/Realisiert. Etwa 12 Top Level Areas und 80 Districts in diesen GebietenSQL-Gruppierung und Summen

Wie kann ich die Daten so abfragen, dass ich bei jeder Änderung des Distrikts eine Pause mit seiner Potenziellen Summe und Realisierten Summe zusammen mit der gleichen Potenziellen Summe und Distriktsumme bekomme Änderung der einzelnen Bereiche?

Etwas wie:

Area1  District1  500 200 
Area1  District1  200 null 
Total Row    700 200 
Area1  District2  200 200 
Area1  District2  null null 
Total Row    200 200 
Area Total    900 400 
Area2  District3......etc......... 

EDIT für Code. Hier ist, was ich habe, so weit, wenn ich insgesamt jedesmal, wenn die AreaID oder DistrictID bekommen konnte Änderungen Ich glaube, ich den Rest bekommen

DECLARE @FiscalYear INT 
SELECT @FiscalYear = 2014 

SELECT  tblFacilities.FacilityID, 
     tblAreas.AreaID, 
     tblFacilities.DistrictID, 
     tblFacilities.UnitName, 
     tblDistricts.DistrictName, 
     tblAreas.AreaName, 
     TotalSavings = (SELECT TotalSavings FROM ufn_RainbowTCReductionStrategies(tblFacilities.FacilityID, @FiscalYear)) 

FROM  tblFacilities INNER JOIN tblDistricts ON tblFacilities.DistrictID = tblDistricts.DistrictID 
     INNER JOIN tblAreas ON tblDistricts.AreaID = tblAreas.AreaID 
+0

ich mag * genug wissen, um gefährlich zu sein * :-) Bitte Stellen Sie die Struktur Ihrer Tabelle und einige Beispieldaten zur Verfügung. Die Sachen, nach denen du suchen könntest, sind "GROUP BY" und "SUM" oder "AVG" oder irgendeine andere Aggregatfunktion ... – Shnugo

+0

hast du versucht, GROUP BY ROLLUP zu benutzen? –

Antwort

5
SELECT 
    Area, 
    District, 
    SUM(Potential), 
    SUM(Realized) 
FROM 
    table 
GROUP BY 
    Area, 
    District 
WITH ROLLUP; 
+4

Die 'WITH ROLLUP'-Syntax ist [veraltet] (https://msdn.microsoft.com/en-us/library/ms177673.aspx). Sie sollten stattdessen den ANSI-Standard 'GROUP BY ROLLUP (Area, District)' verwenden. –