waktu tersisa untuk klaim DISKON 40% dalam program Full Stack Membership. Klaim Promo!
Lebih terarah belajar coding melalui Kelas Online dan Interactive Coding Lihat Materi Belajar

Pivot dengan Range-Date

Ditulis oleh Soeleman, dipublikasi pada 14 Aug 2017 dalam kategori Tutorial
Pivot dengan Range-Date - CodePolitan.com

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.

alt text

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.

alt text

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.

alt text

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.

alt text

SQL Server

Untuk SQL Server, tidak banyak berbeda. Hanya penyesuaian beberapa fungsi-nya, terutama kita memanfaatkan pivot keyword.

alt text

Dalam melakukan dynamic-sql setiap database punya caranya masing-masing. Tapi tidak sulit juga dilakukan.

alt text

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

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.


background

Gabung CodePolitan Membership

Ingin belajar coding secara online dengan lebih terarah? Gabung sekarang dalam program Premium Membership di CodePolitan. Dapatkan ratusan modul belajar pemrograman premium dalam beragam format dengan materi silabus lengkap dan tersusun rapi dari awal hingga mahir.

LIHAT MATERI BELAJAR GABUNG MEMBERSHIP