Oracle滞后函数,它可以接受列别名吗?

Why*_*sie 1 oracle plsql lag

我正在尝试使用滞后函数,因此我可以在不使用游标的情况下将一列与最后一列进行比较.但是,我需要比较的列必须使用别名,因为我正在使用3个联合.这是我要做的一个例子.

SELECT
'Y' AS paid,
 lag(paid,1) over (ORDER BY salary) AS prev_paid
FROM pay
UNION 
SELECT 
  'N' as paid,
  lag(paid,1) over (ORDER BY salary) AS prev_paid
FROM not_paid
Run Code Online (Sandbox Code Playgroud)

我一直收到错误:PL/SQL:ORA-00904:"付费":无效的标识符

Ton*_*ews 5

我怀疑你想要更像这样的东西:

SELECT paid, lag(paid,1) over (ORDER BY salary) AS prev_paid
FROM
(
  SELECT 'Y' as paid, salary
  FROM pay
  UNION 
  SELECT 'N' as paid, salary
  FROM not_paid
)
Run Code Online (Sandbox Code Playgroud)