Выберите константы как псевдостолбцы и выполните арифметику с псевдостолбцами - PullRequest
0 голосов
/ 16 декабря 2018

Я хочу сделать что-то вроде этого:

select 999 as price, 0.1 as tax_rate, 
price*tax_rate as tax_amount, tax_amount+price as total
from Dual;

в базе данных Oracle.

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете использовать CROSS APPLY (Oracle 12c):

select price, tax_rate, tax_amount, tax_amount+price as total
from Dual
CROSS APPLY (SELECT 999 AS price, 0.1 AS tax_rate FROM dual) s
CROSS APPLY (SELECT price*tax_rate AS tax_amount FROM dual) s2;

select price, tax_rate, tax_amount, tax_amount+price as total
from Dual
,LATERAL (SELECT 999 AS price, 0.1 AS tax_rate FROM dual) s
,LATERAL (SELECT price*tax_rate AS tax_amount FROM dual) s2;

db <> fiddle demo

Вы не можете ссылатьсяк определенным столбцам на том же уровне (SELECT), но с помощью CROSS APPLY / LATERAL JOIN вы можете создать цепочку вычисляемых столбцов без использования подзапросов.

Аналогичный подход: PostgreSQL с использованием вычисляемого столбцав том же запросе

...