要回答您的第一个问题,这是因为您指定了附加列,而 DB2 无法将其扩展*
为列列表。您可以通过添加表标识符FROM TABLE T
并使用公开的标识符来展开列列表来解决此问题SELECT ..., T.*
正如您在信息中心的这张图表上所见,您只能使用 EITHER *
OR 表达式和exposed-name.*
>--+-*-----------------------------------------------+---------><
| .-,-------------------------------------------. |
| V | |
'---+-expression--+-------------------------+-+-+-'
| | .-AS-. | |
| '-+----+--new-column-name-' |
'-exposed-name.*--------------------------'
对于二和三,列不能通过SELECT
别名引用来访问同一子句中函数的值。您可以将其向下推入子选择,然后使用该OVER()
功能。然后,您可以通过添加以下内容来获取所需的行BETWEEN
:
SELECT ROWNUMBER() OVER( ORDER BY TYPE_DATE ) as ROWID, T1.*
FROM (
SELECT TO_DATE( date, 'mm\dd\yyyy' ) as TYPE_DATE, T.*
FROM TABLE T
) T1
WHERE ROWNUMBER() OVER( ORDER BY TYPE_DATE ) BETWEEN 10 AND 20
ORDER BY TYPE_DATE