Rabu, 21 Februari 2018

SQL Snippets - Membuat Nomor Baris pada SQL Server

Berikut data yang akan saya gunakan :
Data Provinsi dan Kabupaten/Kota

SQL untuk membuat data tersebut adalah sbb :
CREATE TABLE dbo.tbProvinsi (
 idData TINYINT PRIMARY KEY,
 namaProvinsi VARCHAR(200)
);

CREATE TABLE dbo.tbKabupatenKota (
 idData SMALLINT PRIMARY KEY,
 idProvinsi TINYINT,
 namaKabupatenKota VARCHAR(200)
);

INSERT INTO dbo.tbProvinsi (idData,namaProvinsi) 
VALUES 
(1,'ACEH'),
(2,'SUMATERA UTARA')
;

INSERT INTO dbo.tbKabupatenKota (idData,idProvinsi,namaKabupatenKota) 
VALUES 
(1,1,'BANDA ACEH'),
(2,1,'KOTA LHOKSEUMAWE'),
(3,1,'KOTA SABANG'),
(4,2,'KOTA MEDAN'),
(5,2,'KOTA BINJAI'),
(6,2,'KOTA SIANTAR')
;

Untuk membuat nomor baris seperti gambar ini :
Hasil Query dengan Nomor Baris
gunakan SQL berikut :
SELECT 
 ROW_NUMBER() OVER (ORDER BY a.namaKabupatenKota) AS [No],
 a.namaKabupatenKota AS [Nama Kabupaten Kota],
 b.namaProvinsi AS [Nama Provinsi]
FROM 
 dbo.tbKabupatenKota a LEFT JOIN dbo.tbProvinsi b ON a.idProvinsi=b.idData
;

Penjelasan singkat tentang code diatas adalah :
  • Nomor baris diciptakan dengan fungsi ROW_NUMBER()
  • Nomor baris akan dihitung berdasarkan urutan kolom namaKabupatenKota secara Ascending (Sesuai dengan apa yang dituliskan didalam buka kurung tutup kurung setelah kata OVER)

Jika, nomor baris mau direset berdasarkan kelompok tertentu, gunakan PARTITION BY
Hasil Query dengan Nomor Baris yang diReset per Kelompok
SQL nya :
SELECT 
 ROW_NUMBER() OVER (PARTITION BY b.namaProvinsi ORDER BY a.namaKabupatenKota DESC) AS [No],
 a.namaKabupatenKota AS [Nama Kabupaten Kota],
 b.namaProvinsi AS [Nama Provinsi]
FROM 
 dbo.tbKabupatenKota a LEFT JOIN dbo.tbProvinsi b ON a.idProvinsi=b.idData
;

Silahkan dicoba dan semoga bermanfaat. ^_^

Tidak ada komentar:

Posting Komentar