0
0
0
share
#database#database#sql#sql
0 Komentar
Pivot dengan Range-Date
Membuat laporan selalu menjadi hal yang kadang terlihat mudah tapi merepotkan. Apalagi bila datanya memang tidak lengkap karena memang di rancang seperti itu.
Dalam kasus ini, ada data harian yang tidak di masukkan lengkap. Maksudnya dari tanggal 1 sampai tanggal 8, data yang ada bisa bervariasi. Untuk sebuah report tentu lebih mudah di baca apabila deretan tanggalnya lengkap.
Table
Kita buat sederhana saja. Untuk ini kita hanya perlu satu table.
Table SessionLogs
Di sini ada dua Item yang memiliki jumlah data harian yang berbeda. Dan juga tanggal yang bervariasi.
Resulset
Yang di inginkan mendapatkan data yang sebanyak 8 tanggal. Di sini di artikan 8 column, yang berarti ini pivot. Apabila tidak ada data di tanggal(contoh tanggal 6), maka colum tetap ada hanya isinya kosong. Bagi penguna laporan ini data ini akan kebanyakkan di buat dalam chart.
MySQL
Yang pertama kita lakukan adalah membuat tanggal sesuai dengan jarak yang di tentukan. Disini kita menggunakan Table Numbers (CodePolitan: Membuat Table Numbers untuk SQL).
Dari situ kita gabungkan data dengan deretan tanggal tersebut. Selanjutnya kita pivot-kan sesuai dengan yang di perlukan.
Yang kita lakukan di atas adalah static dan manual. Kenyataanya range tanggal-nya berubah-ubah. Dan yang kita bisa lakukan adalah membuat dynamic-sql seperti pada query di bawah.
SQL Server
Untuk SQL Server, tidak banyak berbeda. Hanya penyesuaian beberapa fungsi-nya, terutama kita memanfaatkan pivot keyword.
Dalam melakukan dynamic-sql setiap database punya caranya masing-masing. Tapi tidak sulit juga dilakukan.
Penutup
Membuat deretan tanggal adalah kunci membuat solusi ini. Realisasinya dalam aplikasi akan cenderung ke dalam dynamic-sql dan tidak sulit juga dilakukan. Optimasi adalah langkah berikut untuk solusi ini.
Referensi
- Ms Docs: Transact-SQL Reference (Database Engine)
- MySQL Reference Manual
- CodePolitan: Membuat Table Numbers untuk SQL
Perhatian! Code yang ditampilkan dalam tulisan ini merupakan ilustrasi dari yang ingin dipaparkan dan bukan production ready code. Sudah banyak kejadian karena asal meng-copy-and-paste tanpa mengerti code yang diambil itu ke dalam production. Selain itu perlu ada tambahan code dan test sebelum siap untuk digunakan secara utuh.
0
0
0
share