Het is niet nodig om analytische functies te vermijden als uw database ze ondersteunt, bijvoorbeeld ROW_NUMBER()
SELECT
ROW_NUMBER() OVER (ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) AS Number
FROM
[<TABLE_NAME>]
De syntaxis is Func([ arguments ]) OVER (analytic_clause)
je moet je concentreren op OVER (). Deze laatste haakjes maken partitie(s) van je rijen en passen de Func() één voor één op deze partities toe. In bovenstaande code hebben we alleen een enkele set / partitie van rijen. Daarom is de gegenereerde reeks voor alle rijen.
U kunt meerdere sets van uw gegevens maken en voor elk daarvan in één keer een volgnummer genereren. Als u bijvoorbeeld een volgnummer moet genereren voor alle rijen die dezelfde categorie-id hebben. Je hoeft alleen maar Partition By
toe te voegen clausule zoals deze (PARTITION BY categoryId ORDER BY [<PRIMARYKEY_COLUMN_NAME>])
.
Onthoud dat na FROM
je kunt ook nog een extra ORDER BY
. gebruiken om uw gegevens anders te sorteren. Maar het heeft geen effect op de OVER ()