如何在 z/OS 上的 DB2 10 中使用 ROW_NUMBER?

How do I use ROW_NUMBER in DB2 10 on z/OS?

我正在 运行 宁 SQL 查询并试图将结果分解成块。

select task_id, owner_cnum
    from (select row_number() over(order by owner_cnum, task_id)
        as this_row, wdpt.vtasks.*
            from wdpt.vtasks)
                where this_row between 1 and 5;

SQL 在 Windows 和 Linux 上与 DB2 10.5 一起工作,但在 z/OS 上的 DB2 10.1 上失败,并显示以下错误消息:

当我 运行 来自 IBM DataStudio 4.1.1 运行 的 SQL 在我的 Windows 机器上连接到数据库时,我得到:

ILLEGAL SYMBOL "<EMPTY>". SOME SYMBOLS THAT MIGHT BE LEGAL ARE: CORRELATION NAME. SQLCODE=-104, SQLSTATE=42601, DRIVER=4.18.60  

当我在 zLinux 系统上 运行 我的 Java 程序连接到数据库时,出现以下错误:

DB2 SQL Error: SQLCODE=-104, SQLSTATE=42601, SQLERRMC=<EMPTY>;CORRELATION NAME, DRIVER=3.65.97

知道我做错了什么吗?

在某些 DB2 版本中,您必须为子选择使用相关名称,如错误消息所建议的那样:

select FOO from (
  select FOO from BAR
) as T

这里"T"是关联名