2013-03-25 2 views
0

Я извлечение нескольких записей из SQL Server 2005 базы данных:Поворотная один данные столбцов в строки, сохраняя при этом другие столбцы нетронутыми

enter image description here

Я хочу, чтобы повернуть данные, чтобы показать результаты, как показано ниже:

enter image description here

Даты и процессы могут быть неограниченными, поэтому я хочу использовать динамический стержень. Я попробовал несколько решений, но не смог заставить его работать.

ответ

1

Ну, во-первых, у вас не может быть неограниченного количества столбцов в таблице, поэтому я предполагаю, что у вас меньше 1023 процессов. Во всяком случае, вы должны будете использовать динамический стержень для этого:

DECLARE @Processes AS NVARCHAR(MAX), @Query AS NVARCHAR(MAX); 

SELECT @Processes = STUFF((SELECT DISTINCT ',' + QUOTENAME(Process) 
          FROM YourTable 
          WHERE Process IS NOT NULL 
          FOR XML PATH(''), 
          TYPE).value('.', 'NVARCHAR(MAX)'),1,1,'') 

SET @Query = ' 
SELECT * 
FROM YourTable T 
PIVOT(SUM([Percent]) FOR Process IN ('[email protected]+')) AS PT' 

EXEC(@Query) 

Here is a sqlfiddle с живой демонстрацией.

Смежные вопросы