我有以下查询,名为 DELAY 的别名工作正常,但是当我尝试运行第一个查询添加AND DELAY < 0
时,无法识别别名。
我尝试创建别名QUERY AS DELAY或QUERY AS "DELAY"但没有成功。
奇怪的是 order by 中的别名 DELAY 不会产生错误。
SELECT ITK_TCK_ID,
ITK_OPENED_DATE,
TO_NUMBER(ROUND(ROUND(GET_HS(ITK_OPENED_DATE,
SYSDATE,
ITK_NORMAL_BEGIN,
ITK_NORMAL_END,
ITK_WEEKEND_BEGIN,
ITK_WEEKEND_END,
ITK_FREEDAY_BEGIN,
ITK_FREEDAY_END),
GET_HS(ITK_OPENED_DATE,
SYSDATE,
ITK_NORMAL_BEGIN,
ITK_NORMAL_END,
ITK_WEEKEND_BEGIN,
ITK_WEEKEND_END,
ITK_FREEDAY_BEGIN,
ITK_FREEDAY_END)) -
ITK_EXPIRATION_TIME,
2)) DELAY
FROM INSTANTIATED_TICKLERS
WHERE ITK_AR_SBP_ID = 'PEAJU_PP' -- P_WGR_ID
AND DELAY < 0
ORDER BY DELAY DESC;
有什么建议么?
那是因为 WHERE 在 SELECT 之前执行。您可以尝试在 WHERE 中计算 DELAY
您不能在定义别名的同一级别的 WHERE 子句中使用列别名。
http://docs.oracle.com/cd/E11882_01/server.112/e10592/statements_10002.htm#SQLRF55280
c_别名
使用内联视图: