我有这个问题
SELECT DAL_ROWNOTABLE.DAL_ID FROM
(
SELECT ticket.id AS "DAL_ID", ROWNUMBER ( Order By ticket.id ) AS "DAL_ROWNUMBER"
FROM ticket_table ticket
WHERE ( ticket.type = N'I' )
AND
(
ticket.tenant IS NULL OR ticket.tenant IN
(
SELECT * FROM
(
SELECT tenant_group_member.tenant_id
FROM tenant_group_member
WHERE tenant_group_member.tenant_group = HEXTORAW('30B0716FEB5F4E4BB82A7B7AA3A1A42C')
ORDER BY ticket.id
)
)
)
) DAL_ROWNOTABLE
WHERE DAL_ROWNOTABLE.DAL_ROWNUMBER BETWEEN 1 AND 21抛出ORA-00936缺失表达式的allow查询有什么问题?有没有人?任何帮助都将在first order by的开头的appreciated...Error :80处抛出:
发布于 2014-03-23 03:34:53
您的查询可以大大简化。它有额外的子查询层和in子查询中不必要的order by。只需使用rownum即可实现rownumber的功能
SELECT DAL_ROWNOTABLE.DAL_ID
FROM (SELECT ticket.id AS "DAL_ID"
FROM ticket_table ticket
WHERE (ticket.type = N'I' ) AND
(ticket.tenant IS NULL OR
ticket.tenant IN (SELECT tgm.tenant_id
FROM tenant_group_member tgm
WHERE tgm.tenant_group = HEXTORAW('30B0716FEB5F4E4BB82A7B7AA3A1A42C')
)
)
ORDER BY ticket.id
) DAL_ROWNOTABLE
WHERE rownum <= 21;发布于 2014-03-23 03:08:20
ORA-00936通常表示存在语法错误。
ROWNUMBER不是一个Oracle函数。除非您有一个同名的用户定义函数,否则我怀疑您要查找的函数是ROW_NUMBER()。
https://stackoverflow.com/questions/22582103
复制相似问题