SQL Server组行号

问题描述 投票:2回答:1

我只是想知道是否可以在不使用Group By的情况下计算组的唯一行号...

我的数据集如下......

FileSize         FileSize(KB/MB)
--------------------------------
             0      0.00 KB
             0      0.00 KB
            36      0.04 KB
            39      0.04 KB
           425      0.42 KB
           435      0.42 KB
           435      0.42 KB
       1000960      0.95 MB
       1001290      0.95 MB
    1266831853      1.27 GB
    1266831968      1.27 GB
    1312708509      1.31 GB
    1312711756      1.31 GB
    1367911756      1.36 GB

我想按照TabularModel中的FileSize列对FileSize(KB / MB)进行排序所需的数据集输出...

FileSizeRank    FileSize    FileSize(KB/MB)
-------------------------------------------
    1                    0      0.00 KB
    1                    0      0.00 KB
    2                   36      0.04 KB
    2                   39      0.04 KB
    3                  425      0.42 KB
    3                  435      0.42 KB
    3                  435      0.42 KB
    4              1000960      0.95 MB
    4              1001290      0.95 MB
    5           1266831853      1.27 GB
    5           1266831968      1.27 GB
    6           1312708509      1.31 GB
    6           1312711756      1.31 GB
    7           1367911756      1.36 GB

我试过这个,但没有用

ROW_NUMBER() OVER(PARTITION BY [Filesize(KB/MB)] ORDER BY  FileSize) AS FileSizeRank
sql-server tsql row-number
1个回答
1
投票

你需要使用DENSE_RANK

SELECT *,DENSE_RANK() OVER( ORDER BY [Filesize(KB/MB)]) AS FileSizeRank
FROM tab

Rextester Demo


编辑:

为避免可能的ORDER BY文本问题,我建议使用:

SELECT *,DENSE_RANK() OVER( ORDER BY ROUND([File Size]/1000.0,2)) AS FileSizeRank
FROM tab;

Rextester Demo2

© www.soinside.com 2019 - 2024. All rights reserved.