Author |
Topic |
mitasid
Yak Posting Veteran
51 Posts |
Posted - 2007-01-21 : 20:11:02
|
Hi guys I need to aggregate a table to three different levels but I need the results in a single table. Here is the sample data IndicatorName DHBName PHOName Practice PracticeName Numerator Denominator ABC SAM a PracticeA QW 22500 22.5 BNN SAM b PracticeB SSS 22500 22.5 dddd JONES c PracticeC FFFF 22500 45 ssss Alter d PracticeZ QW 22500 22.5 rrrr Sam a PracticeA FFFF 52500 60 ABC GINI b PracticeA ASDFF 45000 45 BNN Hoe c PracticeD Tahunanui Medical Centre 45000 15 Now I need to group this table first on the dhb level:Query used SELECT IndicatorName, DHBName,sum( Num),sum( Den)FROM DHBLevelGROUP BY IndicatorName, DHBName Then group on PHO LevelSELECT IndicatorName, DHBName, phoname,SUM(Num) AS Expr1, SUM(Den) AS Expr2FROM DHBLevelGROUP BY IndicatorName, DHBName,phoname Then on Practice LevelSELECT IndicatorName, DHBName, phoname,practicename,SUM(Num) AS Expr1, SUM(Den) AS Expr2FROM DHBLevelGROUP BY IndicatorName, DHBName,phoname,practicename.Now I need to see the aggregates in 1 single table only.How shall i do this??Here is the create table scriptUSE [PhoTest]CREATE TABLE [dbo].[performanceOctober]([IndicatorName] [nvarchar](255) COLLATE Latin1_General_CI_AS NULL,[DHBName] [nvarchar](255) COLLATE Latin1_General_CI_AS NULL,[PHOName] [nvarchar](255) COLLATE Latin1_General_CI_AS NULL,[PracticeName] [nvarchar](255) COLLATE Latin1_General_CI_AS NULL,[Numerator] [float] NULL,[Denominator] [float] NULL) ON [PRIMARY] |
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2007-01-21 : 20:19:18
|
How will be the result looks like ?by the way, you missed out the column Practice in the table script KH |
 |
|
mitasid
Yak Posting Veteran
51 Posts |
Posted - 2007-01-21 : 20:24:25
|
Hi sorry i have missed that.I want my table to look like following:IndicatorName DHB PHO Practice DHBTotalNum DHbtotalDen PHOTotalNum PHOTOTALDen PracticeTotalNum PracticetotalDen |
 |
|
khtan
In (Som, Ni, Yak)
17689 Posts |
Posted - 2007-01-21 : 20:33:52
|
try this select p.IndicatorName, p.DHBName, p.phoname, p.practicename, DHBTotalNum = d.Expr1, DHBTotalDen = d.Expr2, PHOTotalNum = h.Expr1, PHOTotalDen = h.Expr2, PracticeTotalNum = p.Expr1, PracticeTotalDen = p.Expr2from( SELECT IndicatorName, DHBName, phoname, practicename, SUM(Num) AS Expr1, SUM(Den) AS Expr2 FROM DHBLevel GROUP BY IndicatorName, DHBName,phoname,practicename) pinner join( SELECT IndicatorName, DHBName, phoname, SUM(Num) AS Expr1, SUM(Den) AS Expr2 FROM DHBLevel GROUP BY IndicatorName, DHBName, phoname) hon p.IndicatorName = h.IndicatorNameand p.DHBName = h.DHBNameand p.phoname = h.phonameinner join( SELECT IndicatorName, DHBName, sum( Num) as Expr1, sum( Den) as Expr2 FROM DHBLevel GROUP BY IndicatorName, DHBName) don p.IndicatorName = d.IndicatorNameand p.DHBName = d.DHBName KH |
 |
|
SwePeso
Patron Saint of Lost Yaks
30421 Posts |
Posted - 2007-01-22 : 00:46:58
|
GROUP BY ... WITH ROLLUPGROUP BY ... WITH CUBEPeter LarssonHelsingborg, Sweden |
 |
|
herothecat
Starting Member
19 Posts |
Posted - 2007-01-23 : 20:24:32
|
SELECT IndicatorName, DHBName, PHOName, PracticeName, Numerator, Denominator, sum(Numerator) OVER (PARTITION BY IndicatorName, DHBName) as DHBnumTotal, sum(Denominator) OVER (PARTITION BY IndicatorName, DHBName) as DHBdenTotal, sum(Numerator) OVER (PARTITION BY IndicatorName, DHBName, PHOName) as PHOnumTotal, sum(Denominator) OVER (PARTITION BY IndicatorName, DHBName, PHOName) as PHOdenTotal, sum(Numerator) OVER (PARTITION BY IndicatorName, DHBName, PHOName, PracticeName) as PRCnumTotal, sum(Denominator) OVER (PARTITION BY IndicatorName, DHBName, PHOName, PracticeName) as PRCdenTotalFROM performanceOctoberWhy push the envelope when you can just open it? |
 |
|
|
|
|