Как разделить столбцы по заголовку поля - PullRequest
0 голосов
/ 10 мая 2019

Я работаю с одной таблицей склада с такими столбцами, как «Сбор за 2015 год», «Доход за 2015 год», «Сбор за 2016 год», «Доход за 2016 год» и т. Д. Мне нужно разделить их на «Доход», «Сбор» и "Счетный год", чтобы сделать некоторый анализ. Многие из записей имеют плату и доход за несколько лет.

Заявление CASE, которое я пробовал, тянет только в первый год, но мне нужно, чтобы оно тянуло все годы.

Вот мои утверждения:

    (CASE when 2015_revenue IS NOT NULL then 2015_revenue
        when 2016_revenue_$ IS NOT NULL then 2016_revenue
       END) as revenue,
(CASE when 2015_fee IS NOT NULL then 2015_fee
    when 2016_fee IS NOT NULL then 2016_fee
  END) as fee, 
(CASE when 2015_revenue IS NOT NULL then '2015'
        when 2015_fee IS NOT NULL then '2015'
        when 2016_revenue IS NOT NULL then '2016'
        when 2016_fee IS NOT NULL then '2016'
        end) as bill_year

Есть идеи?

1 Ответ

0 голосов
/ 10 мая 2019

Это не оператор CASE, он создает временную таблицу с UNION и присоединяется к ней:

    SELECT p1.[bunch of fields from table]
    amts.fee
    amts.revenue
    amts.bill_year
    FROM table p1
    JOIN (SELECT id, 2015_revenue as revenue, 2015_fee as fee, '2015' as bill_year FROM table
           UNION
           SELECT id, 2016_revenue as revenue, 2016_fee as fee, '2016' as bill_year FROM table
           U) amts on amts.id = p1.id;
...