seandainya kita akan membuat halaman web untuk menampilkan data penjualan dari database adventurework 2012 [1] seperti pada query :
maka kit memerlukan solusi paging untuk itu. Karena jika query itu dijalankan maka akan menampilkan data sebanyak 121.317 baris.. tentu hal yang mustahil menampilkan data sebanyak itu dalam 1 halaman web saja.
pada sistem database yang lain misalnya mysql , postgresql atau sqlite maka akan dikenal keyword limit dan offset untuk melakukan paging [2], namun hal itu tidak berlaku di sqlserver.
untuk melakukan paging di sqlserver kita memerlukan beberapa langkah secara umum :
- Jadikan query menjadi nested query
- Berikan nomor pada masing – masing baris hasil nested query pada query baru kita
- filter hasil query berdasarkan nomor tersebut
untuk proses nomor 2 , kita dapat memanfaatkan function dari sqlserver yaitu row_number() [3], seperti pada query :
setelah melakukan number maka kita dapat jadikan hal tersebut sebagai nested query dan memfilter datanya berdasarkan kolom number seperti pada query :
Paging pada SQLSERVER 2012
khusus pada sqlserver 2012 ke atas, paging dapat dilakukan dengan lebih simple dengan memanfaatkan keyword offset fetch [4], dengan langkah – langkah secara umum sebagai berikut :
- buat query dasar lengkap dengan pengurutan
- tambahkan keyword offset
- tambahkan keyword fetch
seperti pada query :
mudah bukan….
happy coding semua…
Referensi
[2] http://stackoverflow.com/questions/971964/limit-10-20-in-sql-server
[3] https://msdn.microsoft.com/en-us/library/ms186734.aspx
[4] https://technet.microsoft.com/en-us/library/gg699618%28v=sql.110%29.aspx