Thursday, October 27, 2011

SQL Pivoting weekdays


DECLARE @COLUMNS VARCHAR(8000)
SELECT
@COLUMNS =
COALESCE
(
@COLUMNS + ',[' + CAST(DATEPART(WW, TR_DATE) as varchar) + ']',
'[' + CAST(DATEPART(WW, TR_DATE) as varchar)+ ']'
)
FROM
TRANSACTIONS
GROUP BY
DATEPART(WW, TR_DATE)
ORDER BY DATEPART(WW,TR_DATE)
select @COLUMNS
DECLARE @QUERY VARCHAR(8000)
SET @QUERY = 'SELECT *
FROM
(
SELECT
TR_PR_NO,
DATEPART(ww, TR_DATE) as weekdate,
ISNULL(TR_AMOUNT,0) as amount
FROM
TRANSACTIONS
) PIV
PIVOT
(
SUM(amount) FOR weekdate in (' + @columns + ')
) AS chld'
EXECUTE (@query)
GO

No comments:

Post a Comment