Tidak perlu menghindari Fungsi Analitik jika database Anda mendukungnya, misalnya ROW_NUMBER()
SELECT
ROW_NUMBER() OVER (ORDER BY [<PRIMARYKEY_COLUMN_NAME>]) AS Number
FROM
[<TABLE_NAME>]
Sintaksnya adalah Func([ arguments ]) OVER (analytic_clause)
Anda harus fokus pada LEBIH (). Tanda kurung terakhir ini membuat partisi dari baris Anda dan menerapkan Func() pada partisi ini satu per satu. Dalam kode di atas kami hanya memiliki satu set/partisi baris. Oleh karena itu urutan yang dihasilkan adalah untuk semua baris.
Anda dapat membuat beberapa set data Anda dan menghasilkan nomor urut untuk masing-masingnya sekaligus. Misalnya jika Anda perlu menghasilkan nomor urut untuk semua set baris yang memiliki kategoriId yang sama. Anda hanya perlu menambahkan Partition By
klausa seperti ini (PARTITION BY categoryId ORDER BY [<PRIMARYKEY_COLUMN_NAME>])
.
Ingatlah bahwa setelah FROM
Anda juga dapat menggunakan ORDER BY
tambahan lainnya untuk mengurutkan data Anda secara berbeda. Tapi itu tidak berpengaruh pada OVER ()