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 |

description

code declare

Transcript of Declare code

Page 1: 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 |