【发布时间】:2016-04-25 12:48:00
【问题描述】:
我需要关于必须与 DB2 和 Oracle 一起运行的 SQL 语句的建议。
前段时间建立了一个没有 ID 列的数据库表。添加 ID 列不是问题,但我绝对需要用每行的行号填充它。 我发现 rank() 将是完美的,但在这里我无法选择特定值,因为这样我总是得到值“1”。
当我如下所述设置中间表时,我会输出我需要的所有数据
WITH MY_TEMP_TABLE AS
(
SELECT RANK() OVER (ORDER BY CODE ASC) MY_ROW, CODE, LAND
FROM SECOND_TABLE
)
SELECT *
FROM SECOND_TABLE
INNER JOIN MY_TEMP_TABLE ON SECOND_TABLE.CODE=MY_TEMP_TABLE.CODE
如何使用 MY_ROW 中的值更新数据库表(此处为 SECOND_TABLE)中的 ID 列?
非常感谢...
【问题讨论】:
-
你总是得到值 1 是什么意思?你从哪里得到值 1?在我的行中?
-
我想你想要ROWNUMBER()而不是RANK()。
-
SELECT ROWNUMBER() OVER (ORDER BY CODE ASC) MY_ROW, CODE, LAND FROM BDV_KFWSTAAT
确实返回了 200 多个结果,每个结果都有不同的数字
SELECT ROWNUMBER( ) OVER (ORDER BY CODE ASC) MY_ROW, CODE, LAND FROM BDV_KFWSTAAT where code='DE'
返回值 '1' 与我使用的位置无关。这样我就无法区分结果。 rank() 和 rownumber() 的问题是一样的 -
请edit您的问题并添加一些示例数据和基于该数据的预期输出(请格式化文本,no screen shots)
标签: sql oracle db2 window-functions