1

我完成了除行号之外的 SQL 查询。我想显示行号 例如

  | # | VENDOR NAME  | VENDOR BALANCE |
  +---+--------------+----------------+
  | 1 | VendorName_1 |     Balance1   |
  | 2 | VendorName_2 |     Balance2   |
  | 3 | VendorName_3 |     Balance3   |
  | 4 | VendorName_4 |     Balance4   |

这是我的查询:

 SELECT * 
 FROM ( SELECT xsl.VENDOR_NAME
               , nvl(xsl.DR , 0) - nvl(xsl.CR , 0) Balance
               , ROW_NUMBER() OVER(PARTITION BY nvl(xsl.DR , 0) - nvl(xsl.CR , 0) ORDER BY  nvl(xsl.DR , 0) - nvl(xsl.CR , 0)) rank_max 
        FROM xxng_supp_ledger xsl) 
 ORDER BY rank_max 
4

3 回答 3

1

我相信这就是您正在寻找的:

SELECT xsl.VENDOR_NAME
       , nvl(xsl.DR , 0) - nvl(xsl.CR , 0) Balance
       , ROW_NUMBER() OVER(ORDER BY  (nvl(xsl.DR , 0) - nvl(xsl.CR , 0)) desc) rank_max 
FROM xxng_supp_ledger xsl

这是一个演示

这将按余额值从最高到最低对其进行排序。

于 2020-02-25T06:58:31.030 回答
0

您可以ROW_NUMBER在外部查询中使用分析函数,如下所示:

SELECT ROW_NUMBER() OVER (ORDER BY rank_max) AS RN, T.* FROM (
        SELECT
          xsl.VENDOR_NAME, 
           nvl(xsl.DR , 0) - nvl(xsl.CR , 0) Balance
         ,ROW_NUMBER() OVER(PARTITION BY nvl(xsl.DR , 0) - nvl(xsl.CR , 0) ORDER BY  nvl(xsl.DR , 0) - nvl(xsl.CR , 0)) rank_max 
        FROM xxng_supp_ledger xsl
      ) T
      ORDER BY rank_max
于 2020-02-25T06:53:45.360 回答
0
ROW_NUMBER() OVER (
    [PARTITION BY partition_expression, ... ]
    ORDER BY sort_expression [ASC | DESC], ...
)
于 2020-02-25T07:17:44.910 回答