Как мне повернуть эту таблицу? - PullRequest
0 голосов
/ 30 октября 2019

Я создал таблицу, которая выглядит примерно так:

7column_table

Я хочу повернуть эту таблицу так, чтобы она выглядела как

3 column table

Я пробовал другие посты о PIVOT, но я не мог понять, как это сделать с более чем 2 столбцами, а также когда значения внутри таблицы являются суммами от разных переменных.

1 Ответ

1 голос
/ 30 октября 2019

Вы хотите транспонировать набор записей (отключить, а затем развернуть другой exis). Переносимым решением является использование union, а затем условное агрегирование:

select 
    name,
    max(case when category = 'A' then val end) as valA,
    max(case when category = 'B' then val end) as valB
from (
    select category, premium val, 'premium' name from mytable
    union all select category, net_premium, 'net_premium' from mytable
    union all select category, claims, 'claims' from mytable
    union all select category, fees, 'fees' from mytable
    union all select category, expenses, 'expenses' from mytable
    union all select category, commissions, 'commissions' from mytable
) x
group by name

Важно: чтобы union работал, типы данных всех объединяемых столбцов должны быть одинаковыми (кажется, чтослучай с вашими данными, то есть как десятичные значения везде). Если нет, вам нужно выполнить преобразования, чтобы выровнять типы данных.

...