У меня есть запрос с кучей лефтджойнов.
Создала запрос для вывода "прямых" данных, выводит:
|Номер заказа|Атрибут |Значение| |9213 |Формат |20х20 | |9213 |Количество|4 | |9213 |Материал |кожа | |9214 |Формат |80х80 | |9214 |Количество|1 | |9214 |Материал |дерево |
Мне нужно отобразить следующим образом:
|Номер заказа|Формат|Количество|Материал| |9213 |20x20 |4 |кожа | |9214 |80x80 |1 |дерево |
Вообще не понимаю, как ПРАВИЛЬНО описать pivot, все примеры какие-то слишком простые, а у меня запрос 5 джойнами и 6 условиями. Можете, пожалуйста, на этом примере показать и описать..
Вот вам работающий пример:
CREATE TABLE #temp_table ([Номер заказа] int, [Атрибут] nvarchar(250), [Значение] nvarchar(250));
INSERT #temp_table
VALUES
(9213,N'Формат',N'20х20'),
(9213,N'Количество',N'4'),
(9213,N'Материал',N'кожа'),
(9214,N'Формат',N'80х80'),
(9214,N'Количество',N'1'),
(9214,N'Материал',N'дерево');
WITH temp AS
(SELECT * FROM #temp_table) -- сюда вставьте ваш запрос, как указал коллега
-- ниже, по сути, все что вам нужно
SELECT [Номер заказа],[Формат],[Количество],[Материал]
FROM temp
pivot
(
max([Значение])
for [Атрибут]
in ([Формат],[Количество],[Материал])
)
as pvt
DROP TABLE #temp_table
Документация: PIVOT and UNPIVOT.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости