J'ai terminé ma requête SQL sauf le numéro de ligne. Je veux afficher le numéro de ligne Par exemple
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
voici ma requête:
| # | VENDOR NAME | VENDOR BALANCE | +---+--------------+----------------+ | 1 | VendorName_1 | Balance1 | | 2 | VendorName_2 | Balance2 | | 3 | VendorName_3 | Balance3 | | 4 | VendorName_4 | Balance4 |
3 Réponses :
Vous pouvez utiliser la fonction analytique ROW_NUMBER dans la requête externe comme suit:
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
Je pense que c'est ce que vous recherchez:
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
Cela le classera par valeur de solde du plus élevé au plus bas.
ROW_NUMBER() OVER (
[PARTITION BY partition_expression, ... ]
ORDER BY sort_expression [ASC | DESC], ...
)
Bien que ce code puisse fournir une solution à la question, il est préférable d'ajouter un contexte expliquant pourquoi / comment cela fonctionne. Cela peut aider les futurs utilisateurs à apprendre et à appliquer ces connaissances à leur propre code. Vous êtes également susceptible d'avoir des commentaires positifs des utilisateurs sous la forme de votes positifs, lorsque le code est expliqué.
@Mukeem J'ai déjà essayé celui-ci aussi mais je n'ai pas obtenu mon exigence.
Ceci est simplement copié à partir de sqlservertutorial.net/sql- fonctions-fenêtre-serveur /…