21 Maret 2009

Mendapatkan Nomor Baris pada SQL Server dengan ROW_NUMBER

Jamannya SQL Server 2000 atau sebelumnya, kalo mau buat nomor urut untuk hasil dari operasi SELECT, mesti dilakukan manual. Buat suatu stored procedure atau semacamnya, data dimasukkan ke suatu tabel, baru tabel tersebut diupdate nomor urutnya, gitu cara gampangnya. Mulai versi 2005, SQL Server menyediakan fungsi ROW_NUMBER, sintaxnya sebagai berikut:
ROW_NUMBER () OVER ([] )
Dengan cara ini, hasil dari query akan otomatis mempunyai nomor urut per baris mulai dari nomor 1. membagi hasil query yang
dihasilkan. merupakan urutan berdasarkan field yang ditentukan untuk penomoran baris. Untuk lebih jelasnya misalkan ada tabel “Mahasiswa” yang punya field Kode, Nama dan Kelamin. Misalkan isinya sebagai berikut:








Kemudian diinginkan kolom nomor urut berdarsarkan field Kode, maka jika dijalankan perintah SQL “SELECT ROW_NUMBER() OVER (ORDER BY Kode) AS Nomor,
* FROM Mahasiswa” hasilnya akan seperti dibawah ini.








Kemudian jika diinginkan membagi hasil query berdasarkan field Kelamin, maka jika dijalankan perintah SQL “SELECT ROW_NUMBER() OVER (PARTITION BY Kelamin ORDER BY Kode) AS Nomor, * FROM Mahasiswa” hasilnya akan seperti dibawah ini.

4 komentar:

  1. select ROW_NUMBER() AS Nomor OVER (ORDER BY Kode), i1_cl_nama, i1_tgl, i1_no, i1_cl_pono from i1_invoicemaster WHERE i1_del = '0'
    order by i1_cl_nama, i1_tgl, i1_no


    Error:
    Server: Msg 195, Level 15, State 10, Line 1
    'ROW_NUMBER' is not a recognized function name.

    BalasHapus
    Balasan
    1. haha, itu rumus buat sql 2005 ke atas, klo yg versi 2000 pasti muncul error gitu

      Hapus
    2. solusinya? (untuk versi 2000)

      Hapus
    3. alternatif syntax nya pake apa mas kalo di sql server 2000?

      Hapus