2016-03-23 29 views
1

私のSQLの男は長い休暇中です。私は危険なほど十分に知っています。私は、参加したときに、エリアと地区と潜在的なお金とキャプチャされたお金で分割されたさまざまな場所を私に与えるテーブルを持っています。関心のある列はArea/District/Potential/Realizedです。おおよそ12のトップレベルのエリアとそのエリア内の80の地区SQLのグループ化と合計

どのようにして、潜在的な合計と実現された合計と一緒に地区の各変更で休憩を取るようにデータを照会することができますか?各エリアの変更?

のような何か:

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。ここで私は、私は* :-) *危険なことには十分にしてください知って好きエリアIDまたはDistrictID変化は私が残り

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

を得ることができると思い合計するたびに取得することができれば、私がこれまで持っているものですテーブルの構造とサンプルデータを提供します。あなたが検索できるものは、 'GROUP BY'と 'SUM'または' AVG'やその他の集約関数です。 – Shnugo

+0

GROUP BY ROLLUPを使ってみましたか? –

答えて

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

'WITH ROLLUP'構文は[非推奨]です(https://msdn.microsoft.com/en-us/library/ms177673.aspx)。代わりにANSI標準の 'GROUP BY ROLLUP(Area、District)'を使うべきです。 –

関連する問題