sunil mali Ответов: 1

Проблема запроса сводной таблицы Sql


Привет,

Я всегда застрял с поворотными таблицами, я чувствую, что это самая сложная тема в sql,
Ниже приведен ожидаемый результат, который я хочу, Может ли кто-нибудь помочь?

главная таблица
ProductType     | YTD_SPD     | Var_SPD     | Per_SPD
OutboundNON DOC | 2448.029903 |	244.0843848 | 11.07488288
InboundNON DOC  | 364.819701  | 68.18525457 | 22.98629016


Ожидаемый Результат
ProductType | OutboundNON DOC | InboundNON DOC
YTD_SPD     | 2448.029903     |	364.819701
Var_SPD     | 244.0843848     | 68.18525457
Per_SPD     | 11.07488288     | 22.98629016


Что я уже пробовал:

SELECT 'YTD_SPD' ProductType, 
[OutboundNON DOC], [InboundNON DOC],[InboundDOC],[OutboundDOC]
FROM
(SELECT ProductType,YTD_SPD, Var_SPD from Product_Performance2) AS SourceTable
PIVOT
(
 SUM(Var_SPD)
 FOR ProductType IN ([OutboundNON DOC],[InboundNON DOC],[InboundDOC],[OutboundDOC])
) AS PivotTable;

1 Ответов

Рейтинг:
8

Maciej Los

Вы не можете просто сводить данные, вам нужно сначала распаковать их. Проверить это:

DECLARE @tmp TABLE (ProductType NVARCHAR(30), YTD_SPD DECIMAL(20,8), Var_SPD DECIMAL(20,8), Per_SPD DECIMAL(20,8))

INSERT INTO @tmp (ProductType, YTD_SPD, Var_SPD, Per_SPD)
VALUES('OutboundNON DOC', 2448.029903, 244.0843848, 11.07488288),
('InboundNON DOC', 364.819701, 68.18525457, 22.98629016)

--SELECT ColName As ProductType, [OutboundNON DOC], [InboundNON DOC]
--FROM (
	SELECT  ColName, ProductType, Data 
	FROM (
		SELECT *
		FROM @tmp
	) AS pvt1
	UNPIVOT(Data FOR ColName IN (YTD_SPD, Var_SPD, Per_SPD)) AS unpvt
--) AS src
--PIVOT(SUM(Data) FOR ProductType IN ([OutboundNON DOC], [InboundNON DOC])) AS pvt2

-- ==================================
-- Above code returns unpivoted form
-- Uncomment lines to see final form
-- ==================================


См. документацию MSDN: Использование PIVOT и UNPIVOT | Microsoft Docs[^]


CHill60

Меня опередил. 5 б

Maciej Los

Спасибо, Кэролайн.
;)

sunil mali

Вау.. Большое вам спасибо, вы настоящая звезда, не могли бы Вы помочь мне с какой-нибудь ссылкой, где я могу узнать повороты в глубине.

Maciej Los

Всегда пожалуйста.
Документация MSDN - это то, с чего вы можете начать. Тогда вам нужно практиковать, практиковать и практиковать, потому что практика делает вас мастером. ;)
Есть несколько сайтов, которые я могу вам порекомендовать:
mssqltips.com[^]
блог.aqlauthority.com - автор: пинал Дейв[^]
SQLServerCentral[^]

Удачи вам!

CHill60

Если позволите, вот список статей CodeProject на эту тему (хотя не все они посвящены только SQL Pivot) ... Поиск[^]
Я выбрал две хорошие отправные точки...
Простой способ использования Pivot в SQL-запросе[^]
Оператор Pivot в SQL Server упрощен[^]

Maciej Los

Мой виртуальный 5!