Как прокомментировал ваш вопрос, вам нужно работать с таблицами PIVOT, пожалуйста, посмотрите следующую ссылку .
. Вот пример использования ваших данных:
CREATE TABLE ITEMS (DocNum INT, ItemCode NVARCHAR(MAX), ItemName NVARCHAR(MAX), ItemDesc NVARCHAR(MAX));
INSERT INTO ITEMS (DocNum, ItemCode, ItemName, ItemDesc)
VALUES (40008, '100208', 'Desc of 100208', 'Parts');
INSERT INTO ITEMS (DocNum, ItemCode, ItemName, ItemDesc)
VALUES (40008, '100209', 'Desc of 100209', 'Parts');
INSERT INTO ITEMS (DocNum, ItemCode, ItemName, ItemDesc)
VALUES (40008, '200845', 'Desc of 200845', 'Tire');
INSERT INTO ITEMS (DocNum, ItemCode, ItemName, ItemDesc)
VALUES (40008, '320361', 'Desc of 320361', 'Disc');
INSERT INTO ITEMS (DocNum, ItemCode, ItemName, ItemDesc)
VALUES (40008, '400511', 'Desc of 400511', 'Rim');
Вот пример сводной таблицы:
SELECT
DocNum AS [DocNum], [Parts],[Tire],[Disc],[Rim]
FROM
(
SELECT
DocNum, ItemName, ItemDesc
FROM ITEMS
) AS SOURCE
PIVOT
(
MAX(ItemName) FOR ItemDesc IN ([Parts],[Tire], [Disc], [Rim])
) AS Pivoted;
Вы можете заметить, что имена столбцов совпадают с данными столбца ItemDesc.Для этого простого сценария не является сложной задачей вручную ввести имена столбцов, вам, вероятно, потребуется создать хранимую процедуру для динамического создания сводной таблицы, что вы можете увидеть в следующей ссылке .
Здесь вы можете протестировать этот скрипт: http://www.sqlfiddle.com/#!18/45f81/23/0 и увидеть ожидаемые результаты.Удачи!