SQL convert rows to columns

Имеется таблица в строковом представлении: Дано

Необходимо получить следующий вид:

Результат

Пример инициализации таблицы - SQL Fiddle Пытался реализовать с помощью UNPIVOT, но ничего не выходит.

Тестирую на MS SQL Server 2017


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

Автор решения: Akina
WITH cte AS ( 
SELECT [order_] [order], [date_] [date], [sum_] [sum] FROM table1 UNION ALL
SELECT [order_1], [date_1], [sum_1] FROM table1 UNION ALL
SELECT [order_2], [date_2], [sum_2] FROM table1 UNION ALL
SELECT [order_3], [date_3], [sum_3] FROM table1 UNION ALL
SELECT [order_4], [date_4], [sum_4] FROM table1 UNION ALL
SELECT [order_5], [date_5], [sum_5] FROM table1 UNION ALL
SELECT [order_6], [date_6], [sum_6] FROM table1 UNION ALL
SELECT [order_7], [date_7], [sum_7] FROM table1 UNION ALL
SELECT [order_8], [date_8], [sum_8] FROM table1 UNION ALL
SELECT [order_9], [date_9], [sum_9] FROM table1 
)
SELECT *, SUM([sum]) OVER (ORDER BY [date]) balance
FROM cte;

fiddle

→ Ссылка