Множественный UNPIVOT, возможен ли?

Имеется скрипт у которого на выходе одна строка с итогом и куча столбцов. Необходимо развернуть столбцы по группам. Пример выходных данных: введите сюда описание изображения

Пример того как должно получиться:

введите сюда описание изображения

Получается только одна группа:

    SELECT * FROM(/*здесь большой скрипт*/  )tt
  UNPIVOT (
  gr FOR title IN(18_a,18_b)
  )unpvt

Как сделать разбиение по колонкам?


Ответы (1 шт):

Автор решения: Yitzhak Khabinsky

Попробуйте следующие два решения для MS SQL Server.

Имена столбцов таблицы базы данных должны начинаться с букв.

SQL

-- DDL и образец вставки данных, начало
DECLARE @tbl TABLE (A_18 INT, A_19 int, B_18 INT, B_19 INT, C_18 INT, C_19 INT);
INSERT @tbl ( A_18, A_19, B_18, B_19, C_18, C_19) VALUES
( 20, 50, 20, 50, 32, 54);
-- DDL и образец вставки данных, конец

SELECT * FROM @tbl;

-- Метод #1
SELECT 18 AS Age, A_18 AS A, B_18 AS B, C_18 AS C
FROM @tbl
UNION ALL
SELECT 19, A_19, B_19, C_19
FROM @tbl
ORDER BY Age;

-- Метод #2
SELECT v.*
FROM @tbl
CROSS APPLY (VALUES
      (18, A_18, B_18, C_18),
      (19, A_19, B_19, C_19)
   ) AS v(Age, A, B, C)
ORDER BY v.Age;

Результат

Age A B C
18 20 20 32
19 50 50 54
→ Ссылка