良い一日、
データベースがすでに DB2 から Oracle に変更されているため、一部のプログラム コード (主に SQL コード) を変更したいと考えています。
これは私が成功した例の1つですが、私はそれについてよく理解していません.Googleからそれを見つけることはできません.
以下は、元の SQL クエリ コードです (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
します。DB2のキーワードである必要があると思います。Oracle にもこのようなキーワードはありますか?rownum1
ORA-00923: FROM keyword not found where expected
rownum1
rownum
行 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列との相互作用がどのようになっているのかわかりません。
親切なアドバイス。