使用 Row_Number 对 DB2 中的记录进行编号(并在更改 ID 时重置计数)

Use Row_Number To Number Records in DB2 (And Reset Count on Change of ID)

我想做的是为查询 returns 的记录编号,但在更改特定字段时将编号重置为 1。例如,我希望每次 DCACCT 更改时 Row_Number 计数重置回 1,但当 DCACCT 有多个记录时增加 1。

新列理想情况下如下所示(第一个数字是 row_count,第二列是 DCACCT): 1 - 11

1 - 13

1 - 14

1 - 18

1 - 24

2 - 24

1 - 27

1 - 28

1 - 29

2 - 29

1 - 33

1 - 39

2 - 39

3 - 39

4 - 39

1 - 40

我正在尝试使用 Row_Number 函数,但收到错误消息 Function not supported for this query 但我不确定我在这里做错了什么。我可以使用此功能实现我的目标吗?

SELECT
Row_Number() Over (Order By DCACCT ASC) as row_num,
COMM.DCACCT, COMM.DCATYP, COMM.DCCODE, COMM.DCDESC
FROM P50DATA.DCMTRNL5 COMM
JOIN P50DATA.PACNTSL1 PAT ON COMM.DCACCT=PAT.PACTNO
WHERE
PAT.PLAST NOT IN ('SRC','WELL','EMERGENCY','CONFIRM')
AND COMM.DCCODE IN ('PAT1','PAT2','PAT3','PAT4','PINS','PTRX','MRGF')
ORDER BY COMM.DCACCT;

您正在查找 partition by 子句:

select Row_Number() Over (partition By DCACCT order by DCACCT) as row_num,

您可能偏好用于在每个 DCACCT 值内排序的列——例如创建日期或 ID——但这只是使用字段本身进行任意排序。