【发布时间】:2014-06-06 19:29:23
【问题描述】:
以下查询在别名“RANKING”上引发"00904. 00000 - "%s: invalid identifier" 错误。无法弄清楚为什么这不起作用。如果我消除“WHERE”子句,它会产生正确的结果。
SELECT RELEASE_NAME,
ROW_NUMBER() OVER(ORDER BY START_DATE DESC) AS RANKING
FROM(
SELECT RELEASE_NAME, MIN(START_DATE) AS START_DATE FROM RM_TASK_STATUS_VIEW
WHERE RELEASE_NAME LIKE '%AU%' AND START_DATE IS NOT NULL
GROUP BY RELEASE_NAME
ORDER BY START_DATE
)
WHERE RANKING IN (3,4);
【问题讨论】:
-
您也将
SELECT中的别名称为WHERE条件!您需要在WHERE条件中再次使用整个表达式或再次对其进行子查询。因为别名不能在WHERE子句中引用,而只能在ORDER BY子句中引用。 -
实际上,你不能在 where 子句中使用 row_number()。你会得到 SQL 错误:ORA-30483。
标签: sql oracle row-number where-in