2013-08-28 4 views
0

У меня есть следующая таблица:SQL строка таблицы - преобразование столбца

enter image description here

Как преобразовать таблицу выше в структуре ниже? Я попытался использовать сводную таблицу, но не смог заставить ее работать.

enter image description here

+0

SQL это только ** язык запросов ** - не продукт базы данных. Для таких вещей нам действительно нужно знать, что ** конкретный продукт базы данных ** вы используете - MySQL? Postgres? Oracle? IBM DB2? SQL Server? Что-то другое?? Пожалуйста, обновите теги соответственно –

+0

Я работаю над SQL Server. –

ответ

1

Вам нужно иметь, чтобы посмотреть SQL PIVOT.

Проверить this fiddle

И код:

SELECT * 
FROM 
(
    SELECT Prodname, 
       pcode, 
       Biiledamt 
    FROM  Product 
) p 
PIVOT 
(
    SUM (Biiledamt) 
    FOR Prodname IN ([Prod1],[Prod2],[Prod3],[Prod4]) 
) AS pvt 

Если вы заранее колонны не знаете, то вы можете check this fiddle, который динамически генерирует столбцы для использования.

Код, который:

DECLARE @cols AS VARCHAR(MAX), 
     @query AS VARCHAR(MAX) 

SET @cols = STUFF((SELECT distinct ',[' + Prodname +']' 
      FROM Product c 
      FOR XML PATH(''), TYPE 
      ).value('.', 'VARCHAR(MAX)') 
     ,1,1,'') 


SET @query = 
' SELECT * 
    FROM 
    (
     SELECT Prodname, 
        pcode, 
        Biiledamt 
     FROM  Product 
    ) p 
    PIVOT 
    (
     SUM (Biiledamt) 
     FOR Prodname IN (' + @cols + ') 
    ) AS pvt 
' 


EXEC(@query) 
+0

yap, я попробовал использовать PIVOT, я не могу получить его –

+0

Можете ли вы дать решение для этого? –

+0

@ Vignesh Пожалуйста, проверьте мое обновленное решение. –

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