【问题标题】:Getting the row number in specific order - PLSQL按特定顺序获取行号 - PLSQL
【发布时间】:2022-11-29 01:18:31
【问题描述】:

使用以下查询时获得以下输出

SELECT Tmp.*
      ,DENSE_RANK () OVER (ORDER BY Grp) Rn
FROM (
    SELECT T.*, Id - ROW_NUMBER () OVER (PARTITION BY Recordnum, Imgname ORDER BY Id) Grp
    FROM Testtabledetails T) Tmp
ORDER BY 1, 2;

但预期的输出是(当 RECORDNUM 更改时,RN 应重置为 1 并根据 IMGNAME 递增)

使用以下 SQL 进行数据设置

CREATE TABLE TestTableDetails (
 Recordnum NUMBER
 ,Imgname VARCHAR2 (64)
 ,Fileext VARCHAR2 (8)
);

INSERT ALL 
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042726800, '5000433', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042726800, '5000433', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042726800, '5000436', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042726800, '5000436', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042726800, '5000438', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042726800, '5000438', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042727000, '5000439', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042727000, '5000440', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042727200, '5000441', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042727200, '5000442', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042727200, '5000442', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042727201, '5000443', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042727201, '5000443', '.SBT')
INTO TestTableDetails (Recordnum, Imgname, Fileext) VALUES (
10042727201, '5000444', '.SBT')
SELECT * FROM DUAL;

COMMIT;

请协助我

【问题讨论】:

    标签: oracle plsql row-number rownum


    【解决方案1】:

    我认为您在所需的输出中犯了一个错误,其中 rn 不会在 recordnum 从 *200 更改为 *201 时重置。

    除此之外,它只是:

    SELECT T.*,
           DENSE_RANK () OVER (PARTITION BY Recordnum ORDER BY Imgname) Rn
    FROM Testtabledetails T
    ORDER BY 1, 2;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-05
      • 1970-01-01
      • 2021-02-07
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-10
      相关资源
      最近更新 更多