Declare code
1
DECLARE @cols AS NVARCHAR(MAX); DECLARE @query AS NVARCHAR(MAX); SELECT @cols = STUFF((SELECT distinct ',' + QUOTENAME(Period) FROM temp FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,''); SET @query = ' SELECT Description, ' + @cols + ' FROM ( SELECT CASE WHEN sumUnits > 0 THEN SumAvgRent / sumUnits ELSE 0 END AS Expr1, Description, Period FROM temp ) t PIVOT ( AVG(Expr1) FOR Period IN( ' + @cols + ') ) p '; Execute(@query); Updated SQL Fiddle Demo This should give you the same result: | DESCRIPTION | PERIOD1 | PERIOD2 | PERIOD3 | --------------------------------------------- | D1 | 10 | 0 | 20 | | D2 | 100 | 1000 | 0 | | D3 | 50 | 10 | 2 |
-
Upload
appus20056083 -
Category
Documents
-
view
213 -
download
0
description
code declare
Transcript of Declare code
DECLARE @cols AS NVARCHAR(MAX);DECLARE @query AS NVARCHAR(MAX);
SELECT @cols = STUFF((SELECT distinct ',' + QUOTENAME(Period) FROM temp FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'');
SET @query = ' SELECT Description, ' + @cols + ' FROM ( SELECT CASE WHEN sumUnits > 0 THEN SumAvgRent / sumUnits ELSE 0 END AS Expr1, Description, Period FROM temp ) t PIVOT ( AVG(Expr1) FOR Period IN( ' + @cols + ') ) p ';
Execute(@query);Updated SQL Fiddle DemoThis should give you the same result:
| DESCRIPTION | PERIOD1 | PERIOD2 | PERIOD3 |---------------------------------------------| D1 | 10 | 0 | 20 || D2 | 100 | 1000 | 0 || D3 | 50 | 10 | 2 |