【发布时间】:2013-10-07 02:24:33
【问题描述】:
早安,
我想更改一些程序代码(主要是 SQL 代码),因为数据库已经从 DB2 更改为 Oracle。
这是我成功更改的 1 个示例,但我不太了解它,我无法从 google 找到它。
以下是原始 SQL Query 代码(使用 DB2):
SELECT *
FROM (SELECT T0.CREATEDBY AS C1, row_number() OVER ( ORDER BY T0.GROUPNAME) AS rownum
FROM IBSADMIN.CCGROUP T0
WHERE T0.GROUPID != 0001 AND T0.GROUPID != 001 AND T0.CHANNEL = 'CC') AS tname
WHERE rownum BETWEEN 1 AND 20
这是我编辑后的SQL查询代码(成功从Oracle获取数据):
SELECT *
FROM (SELECT T0.CREATEDBY AS C1, row_number() OVER ( ORDER BY T0.GROUPNAME) AS rownum1
FROM IBSADMIN.CCGROUP T0
WHERE T0.GROUPID != 0001 AND T0.GROUPID != 001 AND T0.CHANNEL = 'CC') tname
WHERE rownum1 BETWEEN 1 AND 20
当我分析时,如果我没有将rownum 更改为rownum1,则会出现错误,错误是ORA-00923: FROM keyword not found where expected。因此我将其更改为rownum1,我认为rownum 应该是DB2 中的关键字,Oracle也有这样的关键字吗?
在第 4 行的最后一部分,来自 DB2 代码,它以 As tname 结尾。如果我将相同的内容放入 Oracle 代码中,则会收到错误 ORA-00933: SQL command not properly ended 。因此我删除了 As 。我不太明白As tname是什么意思,如括号中的SQL查询:
(SELECT T0.CREATEDBY AS C1, row_number() OVER ( ORDER BY T0.GROUPNAME) AS rownum1
FROM IBSADMIN.CCGROUP T0
WHERE T0.GROUPID != 0001 AND T0.GROUPID != 001 AND T0.CHANNEL = 'CC')
它返回 2 列,因此我不明白 As tname 如何与 2 列交互。
请多多指教。
【问题讨论】: