使用 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——但这只是使用字段本身进行任意排序。
我想做的是为查询 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——但这只是使用字段本身进行任意排序。