Kamis, 22 Februari 2018

SQL Snippets - Membuat Paging Data pada SQL Server

Paging data artinya adalah menampilkan data per halaman dengan jumlah baris tertentu. Contoh penerapan paging data yang sangat sering kita jumpai adalah hasil pencarian Google. Hasil pencarian google selalu menampilkan 10 data per halaman. Bisa dibayangkan jika google tidak menerapkan paging data, maka sekali kita tekan cari, maka akan muncul hasil sampai ribuan data. Hal ini sangat merugikan dari segi jaringan, resource komputer dan kenyamanan pengguna.

Pada SQL Server 2012 keatas, paging data sudah sangat mudah. Berikut contoh penggunaannya :


Data yang digunakan sbb :
Data Provinsi Indonesia

Berikut SQL untuk melakukan paging data dengan jumlah baris 10 per halaman
SELECT * FROM dbo.tbProvinsi ORDER BY kodeProvinsi OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY; -- HALAMAN 1 : DATA 1-10
SELECT * FROM dbo.tbProvinsi ORDER BY kodeProvinsi OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY; -- HALAMAN 2 : DATA 11-20
SELECT * FROM dbo.tbProvinsi ORDER BY kodeProvinsi OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY; -- HALAMAN 3 : DATA 21-30
SELECT * FROM dbo.tbProvinsi ORDER BY kodeProvinsi OFFSET 30 ROWS FETCH NEXT 10 ROWS ONLY; -- HALAMAN 4 : DATA 31-40
Berikut hasilnya :
Hasil Data dengan Paging
Penjelasan code SQL :
  • Paging data ditulis dengan keyword OFFSET n ROWS FETCH NEXT x ROWS ONLY
  • Select query wajib memiliki perintah ORDER BY
  • OFFSET n ROWS artinya lewati n baris
  • FETCH NEXT x ROWS ONLY artinya ambil x data selanjutnya

Dari contoh code diatas, maka kita bisa deklarasikan variabel halaman dan jumlah data per halaman agar select querynya menjadi dinamis. Berikut SQL nya :
DECLARE @varBanyakDataPerHalaman INT;
DECLARE @varHalaman INT;
SET @varBanyakDataPerHalaman = 10; --BOLEH KITA UBAH-UBAH
SET @varHalaman = 2; --BOLEH KITA UBAH-UBAH
SELECT * FROM dbo.tbProvinsi 
 ORDER BY kodeProvinsi 
 OFFSET ((@varHalaman - 1) * @varBanyakDataPerHalaman) ROWS FETCH NEXT @varBanyakDataPerHalaman ROWS ONLY;

Silahkan dicoba dan semoga bermanfaat. ^_^

Tidak ada komentar:

Posting Komentar