У меня есть набор исходных данных, хранящихся в базе данных, которая выглядит следующим образом:Повторяющиеся Столбцы в TSQL Pivot
ReportDate Server AvgAvail outageID
6/4/2015 CPU1 0.9797 11111111
6/4/2015 CPU2 0.9999 NULL
6/4/2015 CPU3 0.9999 NULL
6/4/2015 CPU4 0.9999 NULL
6/5/2015 CPU1 0.9999 NULL
6/5/2015 CPU2 0.9999 NULL
6/5/2015 CPU3 0.9887 22222222
6/5/2015 CPU4 0.9999 NULL
6/6/2015 CPU1 0.9999 NULL
6/6/2015 CPU2 0.9999 NULL
6/6/2015 CPU3 0.9999 NULL
6/6/2015 CPU4 0.9999 NULL
6/6/2015 CPU5 0.9999 NULL
Я в настоящее время используют TSQL с динамическим SQL для создания таблицы, поскольку даты отчета могут быть выбраны через сборщик дат. Я хотел бы получить выход выглядеть следующим образом:
Server OutageID 6/4/2015 OutageID 6/5/2015 OutageID 6/6/2015
CPU1 11111111 0.9797 NULL 0.9999 NULL 0.9999
CPU2 NULL 0.9999 22222222 0.9887 NULL 0.9999
CPU3 NULL 0.9999 NULL 0.9999 NULL 0.9999
CPU4 NULL 0.9999 NULL 0.9999 NULL 0.9999
CPU5 NULL NULL NULL NULL NULL 0.9999
Вот мой текущий SQL:
DECLARE @cols NVARCHAR(2000)
DECLARE @cols2 NVARCHAR(2000)
DECLARE @query NVARCHAR(4000)
SELECT @cols = Coalesce(@Cols+',['+ ReportDate +']','['+ ReportDate+']'),
@cols2 = Coalesce(@Cols2+',[outageID],['+ ReportDate +']','[outageID],['+ ReportDate+']')
FROM AVTABLE WHERE ReportDate > getdate() - 22 GROUP BY ReportDate ORDER BY ReportDate
SET @query = 'SELECT Server,'[email protected]+' FROM AVTABLE AS SRC PIVOT (Min(AvgAvail) FOR ReportDate in ('[email protected]+')) AS PVT'
EXEC(@query)
Проблема заключается в том, что Pivot дублирует строки с номерами ППР. Любые мысли о том, как это исправить? TIA
Отлично, что работал как чемпион. Благодаря! –