Я хочу отобразить номер строки с последовательностью - PullRequest
1 голос
/ 25 февраля 2020

Я закончил с моим 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 

Ответы [ 3 ]

1 голос
/ 25 февраля 2020

Я считаю, что это то, что вы ищете:

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

Вот демо

Это упорядочит его по величине баланса от наивысшего к низшему.

0 голосов
/ 25 февраля 2020
ROW_NUMBER() OVER (
    [PARTITION BY partition_expression, ... ]
    ORDER BY sort_expression [ASC | DESC], ...
)
0 голосов
/ 25 февраля 2020

Вы можете использовать аналитическую функцию 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...