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 /…