我有一个查询,该查询旨在向我显示表A中最近更新不够的任何行。(每行应在“ month_no”之后的2个月内更新。):
SELECT A.identifier
, A.name
, TO_NUMBER(DECODE( A.month_no
, 1, 200803
, 2, 200804
, 3, 200805
, 4, 200806
, 5, 200807
, 6, 200808
, 7, 200809
, 8, 200810
, 9, 200811
, 10, 200812
, 11, 200701
, 12, 200702
, NULL)) as MONTH_NO
, TO_NUMBER(TO_CHAR(B.last_update_date, 'YYYYMM')) as UPD_DATE
FROM table_a A
, table_b B
WHERE A.identifier = B.identifier
AND MONTH_NO > UPD_DATE
WHERE子句中的最后一行会导致“ ORA-00904无效标识符”错误。不用说,我不想在WHERE子句中重复整个DECODE函数。有什么想法吗?(接受了修复程序和解决方法...)
HAVING
才是真正的答案。HAVING
是计算列,如条款检查COUNT
,MAX
并在其他表达式SELECT
查询,因为它过滤最终获取的数据。