Вы можете ссылаться и выполнять вычисления, используя столбцы, сгенерированные предложением pivot.Предполагая, что у вас есть какое-то ключевое значение, связывающее пары значений для дат 1 и 2, вы можете сделать что-то вроде:
-- CTE for sample data, with made-up keys
with your_table (some_key, some_date, value) as (
select 1, date '2019-04-01', 5 from dual
union all select 1, date '2019-04-15', 2 from dual
union all select 2, date '2019-04-01', 9 from dual
union all select 2, date '2019-04-15', 1 from dual
union all select 3, date '2019-04-01', 7 from dual
union all select 3, date '2019-04-15', 13 from dual
union all select 4, date '2019-04-01', 5 from dual
union all select 4, date '2019-04-15', 6 from dual
)
-- actual query
select some_key, date1, date2, date1 - date2 as diff
from your_table
pivot (max(value) for some_date in (date '2019-04-01' as date1, date '2019-04-15' as date2))
order by some_key;
SOME_KEY DATE1 DATE2 DIFF
---------- ---------- ---------- ----------
1 5 2 3
2 9 1 8
3 7 13 -6
4 5 6 -1
В выражении date1 - date2 as diff
, date1
и date2
являются именами /псевдонимы из стержня.Обычно вы не можете использовать псевдоним столбца на том же уровне запроса, который его определяет, но pivot позволяет вам избежать неприятностей.