0
0
0
share
#database#database#Microsoft#Microsoft
0 Reaksi
0 Komentar
T-SQL : Greatest Function di SQL Server
Setiap database menyediakan fitur-fitur yang di rasa membantu menyederhanakan tugas. Seperti di MySql memiliki Greatest Function, yang membantu mencari nilai tertinggi dari sejumlah column. Tapi fungsi seperti ini tidak ada di SQL Server. Di tulisan ini kita akan mencoba melihat apakah ada caranya mensimulasi fungsi tersebut.
Table
Untuk mendemokan kita perlu sebuah table.Kita buat table SeriesData, yang berisi Id, Seri1, Seri2 dan Seri3. Semua column itu bertype Int. Lalu di isikan dengan data seperti pada gambar.
Resultset
Dan untuk hasil dari demo ini akan seperti di bawah.MySQL
Dalam MySQL menggunakan Greatest Function sederhana sekali. Column dari table di masukkan kedalam fungsi itu sebagai parameter. Dan hasil-nya akan seperti yang di harapkan.SQL Server
Sedangkan SQL Server tidak memiliki fungsi seperti itu. Walaupun bisa saja kita buat User-Defined Function seperti itu. Dalam kesempatan ini kita akan membuat persamaan Greatest Function lewat T-SQL. Dan ternyata banyak juga caranya.Values
Cara ini hanya bisa di lakukan pada SQL Server 2008 ke atas. Karena kita akan memanfaatkan Table Value Constructor di kombinasikan dengan fungsi MAX. Beberapa variasi bisa di lakukan di sini, untuk saat ini kita coba tunjukkan dengan sederhana agar bisa melihat lebih jelas.Column Sub-Query
Kita juga bisa memanfaatkan Union di Sub-Query seperti pada gambar di bawah. Dan seperti cara di atas, untuk mendapatkan nilai tertingginya kita memanfaatkan fungsi MAXUnpivot
Bisa juga kita lakukan dengan UNPIVOT. Sayangnya dengan ini kita akan terbatas oleh tata cara dari UNPIVOT sendiri. Terutama apabila kita perlu mengkombinasikan dengan sintak lainnya.Union
Kalau di cara Sub-Query kita menggunakan Union. Maka di sini caranya sedikit berbeda, tapi hasil-nya sama.Cross-Join
Bisa juga kita manfaatkan Cross-Join untuk simulasi fungsi itu. Memang terlihat lebih banyak tapi ia memberikan ruang apabila di kombinasikan untuk tujuan lainnya.Penutup
Untuk mengsimulasikan Greatest Function di dalam SQL Server ternyata banyak pilihannya. Terlebih kalau kita mengkombinasikannya dengan User-Defined Function atau Stored-Procedure akan lebih banyak lagi variasinya.Masih ada beberapa fungsi lainnya yang mirip dengan ini di MySql yang bisa kita simulasikan juga. Tentunya dengan modifikasi sedikit kita bisa capai seperti yang di maksud.
Referensi
- Wikipedia: Microsoft SQL Server
- SQL Server
- MySql
- MySql: Greatest Function
- MSDN: Table Value Constructor (Transact-SQL)
- MSDN: Using PIVOT and UNPIVOT
- MSDN: MAX (Transact-SQL)
- MSDN: Create Function (Transact-SQL)
- MSDN: Create Procedure (Transact-SQL)
Perhatian! Code yang di tampilkan 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 di ambil itu ke dalam production. Selain itu perlu ada tambahan code dan test sebelum siap untuk di gunakan secara utuh.
0
0
0
share