CASE WHEN dalam SQL: Panduan Praktis untuk Analisis Data
Kuasai logika kondisional dengan panduan kami tentang case when sql. Pelajari sintaksis, contoh nyata, dan cara mengubah data menjadi wawasan bisnis.

Jika kamu bekerja dengan data, perintah CASE WHEN di SQL ibarat pisau lipat serbaguna untuk query-mu. Ini salah satu klausa yang, begitu kamu menemukannya, kamu bakal bertanya-tanya bagaimana bisa selama ini bekerja tanpanya. Perintah ini memungkinkanmu memasukkan logika kondisional (semacam "jika ini terjadi, maka lakukan itu") langsung ke dalam analisismu
Daripada mengekspor ribuan baris ke spreadsheet lalu menyegmentasikan pelanggan atau mengklasifikasikan penjualan secara manual, dengan CASE WHEN kamu bisa mengintegrasikan logika ini langsung di dalam query. Bagi kamu, ini berarti laporan yang lebih cepat, analisis yang lebih akurat, dan pada akhirnya, keputusan bisnis yang lebih cerdas. Ini adalah langkah pertama untuk membuat analisis datamu benar-benar proaktif.
Apa yang sebenarnya dilakukan oleh CASE WHEN dalam SQL?
Bayangkan alur data yang berantakan, seperti antrean mobil di jalan tol. Tanpa aturan, itu hanya barisan panjang kendaraan. CASE WHEN bekerja seperti sistem penyortiran pintar: mobil merah ke kiri, mobil biru ke kanan, sisanya lurus sesuai jalurnya masing-masing.
Demikian pula, dalam SQL, Anda dapat mengambil data dan, dengan satu klausa, mengubahnya menjadi informasi yang bersih, terorganisir, dan siap untuk dianalisis.
Bagi sebuah UKM, ini bukan sekadar trik teknis, tetapi keunggulan strategis yang nyata. Analisis data berubah dari proses reaktif yang lambat dan manual menjadi proses proaktif dan instan. Keuntungan bagi bisnis Anda jelas:
- Pembersihan real-time: memperbaiki dan menstandardisasi nilai saat proses ekstraksi
- Kategorisasi dinamis: mensegmentasikan pelanggan, produk, dan transaksi berdasarkan performa, tanggal, atau nilai
- Pengayaan kontekstual: membuat kolom dengan status bisnis ("Pelanggan Setia", "Berisiko")
Pada dasarnya, CASE WHEN adalah langkah pertama untuk mengubah datamu dari sekadar angka menjadi insight strategis. Ini adalah jembatan yang menghubungkan tabel mentah dengan laporan yang memungkinkanmu mengambil keputusan yang lebih baik.
Pada bagian-bagian berikutnya, kita akan membahas sintaksis yang tepat dan contoh-contoh praktis untuk menguasai klausa ini dan menyelesaikan masalah bisnis yang konkret.
Belajar sintaksis case when langkah demi langkah
Untuk menguasai logika kondisional di SQL, hal terbaik adalah mulai dari dasar dan memahami dengan baik struktur CASE WHEN. Mari kita mulai dari bentuknya yang paling sederhana, "CASE Sederhana", cocok untuk kamu yang baru memulai.
Versi ini ideal untuk memeriksa nilai-nilai dalam satu kolom dan memberikan hasil yang berbeda untuk masing-masing nilai. Sederhana, rapi, dan efektif.
Struktur CASE Sederhana
Sintaksnya sangat intuitif. Mari kita lihat contoh praktis: bayangkan kamu punya kolom StatoOrdine dengan nilai teks seperti 'Spedito', 'In Lavorazione', atau 'Annullato'. Untuk laporanmu, tentu akan jauh lebih praktis jika ada kode numerik, bukan?
Begini cara mengubah teks tersebut menjadi angka:
SELECTIDOrdine,StatoOrdine,CASE StatoOrdineWHEN 'Spedito' THEN 1WHEN 'In Lavorazione' THEN 2WHEN 'Annullato' THEN 3ELSE 0 -- Ini adalah jaring pengaman kitaEND AS StatoNumericoFROM Vendite;
Seperti yang kamu lihat, CASE merujuk pada kolom yang akan diperiksa (StatoOrdine). Setiap WHEN memeriksa apakah nilainya sama dengan sesuatu yang spesifik, dan THEN memberikan hasil yang sesuai.
Klausa ELSE sangat penting. Ini semacam jaring pengaman: jika tidak ada kondisi WHEN yang terpenuhi, klausa ini memberikan nilai default (di sini, 0), sehingga menghindarkanmu dari hasil NULL yang merepotkan. Jika ingin melihat tabel serupa dalam praktik, kamu bisa melihat contoh database ini.
Kekuatan CASE yang Dicari
"CASE Terarah" (atau Searched CASE) adalah kotak perkakas yang sesungguhnya. Di sinilah fleksibilitas sejati perintah ini muncul, karena kamu tidak lagi terbatas hanya memeriksa satu kolom saja.
Dengan CASE Terarah, kamu bisa membangun kondisi kompleks yang mengevaluasi beberapa kolom sekaligus menggunakan operator logika seperti AND dan OR, atau operator perbandingan seperti > dan <. Ini adalah alat yang sempurna untuk menerapkan logika bisnis yang rumit langsung di dalam query-mu.
CASE Terarah tidak hanya sebatas pemeriksaan kesetaraan sederhana. Ia mengevaluasi apakah suatu kondisi secara keseluruhan bernilai benar, memberimu kekuatan untuk membuat aturan canggih yang mencerminkan dinamika nyata perusahaanmu.
Misalkan Anda ingin mengklasifikasikan penjualan berdasarkan jumlah dan kategori produk. Berikut cara melakukannya:
SELECTIDProdotto,Prezzo,Categoria,CASEWHEN Prezzo > 1000 AND Categoria = 'Elettronica' THEN 'Vendita Premium'WHEN Prezzo > 500 THEN 'Vendita Alto Valore'ELSE 'Vendita Standard'END AS SegmentoVenditaFROM Vendite;
Kemampuan untuk menggabungkan beberapa kondisi inilah yang membuat CASE WHEN menjadi pilar yang tak tergantikan bagi analisis data mana pun yang ingin melampaui permukaan.
Berikut adalah tabel yang merangkum perbedaan utama antara kedua sintaksis tersebut, untuk membantu Anda memilih yang tepat pada waktu yang tepat.
Perbandingan antara sintaksis case sederhana dan case yang dicari
Tabel ini membandingkan secara langsung dua bentuk utama dari klausa CASE, menyoroti kapan masing-masing digunakan dan menampilkan strukturnya secara berdampingan untuk pemahaman yang lebih cepat.
Memilih di antara keduanya bukanlah soal "lebih baik" atau "lebih buruk", tetapi soal menggunakan alat yang paling sesuai untuk pekerjaan yang akan dilakukan. Untuk pemeriksaan langsung dan cepat, CASE Semplice sangat cocok; untuk logika bisnis yang kompleks, CASE Cercato adalah pilihan yang wajib.
Secara visual, kamu bisa membayangkan CASE WHEN sebagai pohon keputusan yang mengambil data mentah dan mengarahkannya ke kategori-kategori yang jelas, membawa keteraturan dan kejelasan dalam analisismu.
Gambar ini menunjukkan hal tersebut: bagaimana satu instruksi SQL dapat mengambil setiap pelanggan dan, berdasarkan beberapa aturan, mengarahkannya ke kategori yang tepat. Inilah kekuatan logika kondisional yang diterapkan pada data.
Bagaimana mengubah data mentah menjadi wawasan bisnis
Sekarang setelah sintaksnya tidak lagi menjadi misteri, saatnya melihat CASE WHEN beraksi dalam skenario bisnis nyata. Kekuatan sesungguhnya dari klausa ini muncul ketika kamu menggunakannya untuk mengubah angka dan kode menjadi insight konkret, menjadi indikasi strategis yang nyata bagi perusahaanmu.
Kami akan fokus pada dua aplikasi utama: segmentasi pelanggan dan analisis margin produk. Ini adalah langkah pertama yang krusial untuk mengambil keputusan berdasarkan data, bukan insting.
Mengelompokkan pelanggan berdasarkan nilai
Salah satu tujuan paling umum bagi perusahaan mana pun adalah memahami siapa pelanggan terbaik mereka. Mengidentifikasi segmen pelanggan dengan nilai tinggi, menengah, dan rendah memungkinkanmu menyesuaikan kampanye pemasaran, mengoptimalkan strategi penjualan, dan meningkatkan loyalitas pelanggan.
Dengan CASE WHEN, kamu bisa membuat segmentasi ini langsung di dalam query-mu. Bayangkan kamu punya tabel FatturatoClienti dengan kolom ClienteID dan TotaleAcquistato.
Begini cara Anda dapat memberi label pada setiap pelanggan sekaligus:
SELECTClienteID,TotaleAcquistato,CASEWHEN TotaleAcquistato > 5000 THEN 'Alto Valore'WHEN TotaleAcquistato BETWEEN 1000 AND 5000 THEN 'Medio Valore'ELSE 'Basso Valore'END AS SegmentoClienteFROM FatturatoClientiORDER BY TotaleAcquistato DESC;
Dengan satu perintah ini saja, kamu telah menambahkan kolom baru, SegmentoCliente, yang memperkaya data mentah dengan konteks bisnis yang langsung terlihat. Sekarang kamu bisa dengan mudah menghitung berapa banyak pelanggan di setiap segmen atau menganalisis perilaku pembelian spesifik mereka, meningkatkan ROI dari kampanye pemasaranmu.
Menghitung dan mengklasifikasikan margin keuntungan produk
Penggunaan strategis lain dari case when sql adalah analisis profitabilitas. Tidak semua produk berkontribusi sama besar terhadap keuntungan. Mengklasifikasikan produk berdasarkan margin keuntungannya membantumu memutuskan di mana harus memusatkan usaha, produk mana yang perlu dipromosikan, dan mungkin produk mana yang sebaiknya dihentikan.
Mari kita ambil tabel Prodotti dengan PrezzoVendita dan CostoAcquisto. Pertama-tama kita hitung marginnya, lalu langsung kita klasifikasikan.
SELECTNomeProdotto,PrezzoVendita,CostoAcquisto,CASEWHEN (PrezzoVendita - CostoAcquisto) / PrezzoVendita > 0.5 THEN 'Alta Marginalità'WHEN (PrezzoVendita - CostoAcquisto) / PrezzoVendita BETWEEN 0.2 AND 0.5 THEN 'Media Marginalità'ELSE 'Bassa Marginalità'END AS CategoriaMarginalitaFROM ProdottiWHERE PrezzoVendita > 0; -- Penting untuk menghindari pembagian dengan nol
Di sini pun, satu kueri saja telah mengubah kolom harga sederhana menjadi klasifikasi strategis, siap digunakan dalam laporan Anda untuk mengoptimalkan katalog dan memaksimalkan keuntungan.
Dari SQL ke otomatisasi dengan platform analitik
Kemampuan menulis kueri ini sangat berharga. Namun, apa yang terjadi ketika kebutuhan menjadi lebih kompleks atau ketika manajer non-teknis perlu membuat segmen ini secara instan? Di sinilah platform analitik data tanpa kode modern berperan.
Ini tidak membuat SQL usang, justru sebaliknya, ini memperkuat nilainya. Logikanya tetap sama, tapi eksekusinya menjadi otomatis dan dapat diakses oleh seluruh tim. Hasilnya adalah ROI instan: tim bisnis dapat menjelajahi data dan membuat segmen kompleks tanpa bergantung pada departemen IT, mempercepat secara drastis proses yang membawa dari data mentah menjadi informasi yang berguna untuk pengambilan keputusan. Para analis, pada gilirannya, bebas untuk fokus pada masalah yang lebih kompleks, karena tahu bahwa analisis rutin sudah ditangani secara otomatis.
Teknik lanjutan dengan CASE WHEN
Bagus, sekarang setelah Anda memahami dasar-dasar segmentasi, saatnya naik level. Mari kita lihat bersama cara mengubah CASE WHEN menjadi alat untuk analisis kompleks dan pelaporan tingkat lanjut, semuanya dalam satu query.
Membuat "pivot table" dengan fungsi agregasi
Salah satu teknik paling ampuh adalah menggabungkan CASE WHEN dengan fungsi agregasi seperti SUM, COUNT, atau AVG. Trik ini memungkinkan Anda membuat "pivot table" langsung di SQL, menghitung metrik spesifik untuk berbagai segmen tanpa perlu menjalankan banyak query.
Misalkan Anda ingin membandingkan, dalam laporan yang sama, total pendapatan yang dihasilkan oleh pelanggan 'Premium' dengan pelanggan 'Standard'. Anda dapat melakukannya sekaligus.
SELECTSUM(CASE WHEN SegmentoCliente = 'Premium' THEN Fatturato ELSE 0 END) AS FatturatoPremium,SUM(CASE WHEN SegmentoCliente = 'Standard' THEN Fatturato ELSE 0 END) AS FatturatoStandardFROM Vendite;
Apa yang terjadi di sini? Fungsi SUM menjumlahkan Fatturato hanya ketika kondisi yang ditentukan dalam WHEN bernilai benar. Untuk semua baris lainnya, jumlahnya nol. Ini adalah cara yang sangat efisien untuk mengagregasi data pada beberapa dimensi sekaligus, menghemat waktu dan mengurangi kompleksitas.
Mengelola logika berlapis dengan kasus bersarang
Terkadang, logika bisnis tidak sesederhana itu. Mungkin Anda perlu mensegmentasi pelanggan tidak hanya berdasarkan berapa banyak yang mereka belanjakan, tetapi juga berdasarkan seberapa sering mereka membeli. Di sinilah logika bertingkat berperan, yang dapat Anda terapkan dengan menyisipkan satu CASE di dalam CASE lainnya.
CASE bersarang memungkinkan Anda membuat sub-kategori yang presisi. Misalnya, kita mungkin ingin membagi pelanggan "Nilai Tinggi" kita menjadi dua kelompok lagi: "Loyal" dan "Sesekali".
SELECTClienteID,TotaleSpeso,NumeroAcquisti,CASEWHEN TotaleSpeso > 5000 THENCASEWHEN NumeroAcquisti > 10 THEN 'Alto Valore - Fedele'ELSE 'Alto Valore - Occasionale'ENDWHEN TotaleSpeso > 1000 THEN 'Medio Valore'ELSE 'Basso Valore'END AS SegmentoDettagliatoFROM RiepilogoClienti;
Perhatikan keterbacaan: meskipun sangat kuat, CASE bersarang bisa menjadi mimpi buruk untuk dibaca dan dipelihara. Jika logikanya melebihi dua tingkat kedalaman, berhentilah. Mungkin sudah saatnya memecah masalah menjadi beberapa langkah, misalnya dengan menggunakan Common Table Expressions (CTE) agar semuanya lebih rapi.
Mengatasi perbedaan antara berbagai basis data
Meskipun CASE WHEN adalah standar SQL yang mapan, ada perbedaan kecil dalam implementasi di berbagai sistem manajemen basis data (DBMS). Mengetahui hal ini sangat penting untuk menulis kode yang portabel.
- MySQL: Sepenuhnya sesuai dengan standar. Anda dapat menggunakan
CASEhampir di mana saja: dalam klausaSELECT,WHERE,GROUP BY, danORDER BY. - PostgreSQL: Mengikuti standar dengan sangat ketat dan menawarkan penanganan tipe data yang sangat kuat, sehingga konversi tipe di dalam
THENditangani dengan cara yang dapat diprediksi. - SQL Server: Mendukung
CASEdengan sempurna, tetapi juga menawarkan fungsi non-standarIIF(kondisi, nilai_jika_benar, nilai_jika_salah).IIFadalah jalan pintas untuk logika biner sederhana (hanya satuIF/ELSE), tetapiCASE WHENtetap menjadi pilihan terbaik untuk keterbacaan dan portabilitas.
Mengetahui nuansa-nuansa ini akan membantu Anda menulis query case when sql yang tidak hanya berfungsi, tetapi juga tangguh dan mudah disesuaikan dengan berbagai konteks teknologi.
Kesalahan umum dan cara mempercepat kueri Anda
Menulis CASE WHEN yang berfungsi hanyalah langkah pertama. Lompatan kualitas sesungguhnya terjadi ketika Anda belajar membuatnya tidak hanya benar, tetapi juga cepat dan tahan terhadap kesalahan. Query yang lambat atau penuh bug dapat merusak laporan Anda dan memperlambat pengambilan keputusan bisnis.
Mari kita lihat bersama cara menyempurnakan teknik, menghindari jebakan yang paling umum, dan mengoptimalkan kinerja analisis Anda.
Perhatikan urutan: trik kecil yang membuat perbedaan besar
Berikut detail yang sering diremehkan: dalam klausa CASE WHEN, database menganalisis kondisi dalam urutan persis seperti yang Anda tulis. Begitu menemukan satu yang benar, ia berhenti dan mengembalikan hasilnya.
Perilaku ini memiliki dampak yang sangat besar pada kinerja, terutama saat bekerja dengan tabel yang memiliki jutaan baris.
Triknya? Selalu letakkan kondisi yang menurut Anda paling sering terjadi di urutan pertama. Dengan cara ini, mesin database akan melakukan usaha minimal untuk sebagian besar baris, mengurangi waktu eksekusi secara drastis.
Kesalahan klasik (dan cara menghindarinya)
Bahkan analis yang paling berpengalaman pun kadang-kadang melakukan kesalahan klasik. Mengetahui kesalahan-kesalahan tersebut adalah cara terbaik untuk segera mengidentifikasinya dan memperbaikinya.
- Melupakan klausa
ELSE
Ini adalah kesalahan nomor satu. Jika Anda menghilangkanELSEdan tidak ada kondisiWHENAnda yang terpenuhi, hasil untuk baris tersebut akan berupaNULL.NULLyang tak terduga ini dapat menimbulkan efek berantai, mengacaukan perhitungan berikutnya. - Kode berisiko:
SELECTPrezzo,CASEWHEN Prezzo > 100 THEN 'Alto'WHEN Prezzo > 50 THEN 'Medio'END AS FasciaPrezzo -- Se Prezzo è 40, il risultato è NULLFROM Prodotti; - Solusi yang aman:
Selalu tambahkanELSEsebagai jaring pengaman untuk menangkap semua kasus yang tidak terduga.SELECTPrezzo,CASEWHEN Prezzo > 100 THEN 'Alto'WHEN Prezzo > 50 THEN 'Medio'ELSE 'Basso' -- Ecco la nostra rete di sicurezza!END AS FasciaPrezzoFROM Prodotti; - Tipe data yang bertentangan
Semua ekspresi setelahTHENharus mengembalikan tipe data yang sama (atau tipe yang kompatibel). Jika Anda mencoba mencampur teks, angka, dan tanggal dalam kolom yang sama yang dihasilkan olehCASE, database akan mengembalikan error. - Kondisi yang saling tumpang tindih
Ini adalah kesalahan logika yang lebih licik. Jika Anda memiliki kondisi yang saling tumpang tindih, ingat aturan emasnya: hanya kondisi pertama yang terbukti benar yang akan dieksekusi. Urutan adalah segalanya. Jika Anda menempatkanWHEN TotaleAcquistato > 1000sebelumWHEN TotaleAcquistato > 5000, tidak ada pelanggan yang akan pernah diberi label 'VIP', karena kondisi pertama akan selalu "menangkapnya" lebih dulu.
Apakah ada alternatif untuk CASE WHEN?
Meskipun case when sql adalah standar universal – dan hampir selalu pilihan terbaik untuk keterbacaan dan kompatibilitas – beberapa dialek SQL menawarkan jalan pintas.
Di SQL Server, misalnya, Anda menemukan fungsi IIF(kondisi, nilai_jika_benar, nilai_jika_salah). Ini praktis untuk logika biner sederhana, tetapi CASE tetap tak tertandingi untuk menangani banyak kondisi dan karena kejelasannya dalam skenario kompleks.
Untuk sebagian besar kasus, berpegang pada standar CASE WHEN adalah pilihan paling bijak. Ini memastikan bahwa kode Anda dipahami oleh siapa saja dan berfungsi tanpa kejutan di berbagai platform.
Melampaui CASE WHEN: Ketika SQL tidak lagi cukup
Menulis kueri CASE WHEN sangat berguna. Namun, jika Anda harus menulis ulang logika segmentasi yang sama setiap minggu untuk laporan bulanan, atau lebih buruk lagi, jika tim pemasaran Anda meminta "bisakah Anda menambahkan segmen ini juga?" setiap dua hari, Anda memiliki masalah skalabilitas, bukan masalah SQL.
Ketika menulis query menjadi hambatan utama
Logika kondisional tetap sama—baik Anda menuliskannya secara manual maupun mendefinisikannya melalui antarmuka—tetapi waktu yang dibutuhkan untuk melakukannya berubah secara drastis. Sebuah kueri yang membutuhkan 20 menit untuk ditulis, diuji, dan didokumentasikan dapat dibuat ulang dalam 2 menit menggunakan antarmuka visual. Kalikan itu dengan semua analisis yang Anda lakukan dalam sebulan, dan Anda akan memahami ke mana waktu Anda pergi.
Masalah sesungguhnya bukan menulis SQL. Masalahnya adalah, sementara Anda menulis query, orang lain di tim Anda menunggu data untuk mengambil keputusan. Dan ketika data akhirnya tiba, jendela waktu yang berguna untuk bertindak seringkali sudah menyempit.
Platform seperti ELECTE hal ini: menerjemahkan logika bisnis menjadi kueri. Ini tidak menghilangkan nilai dari kemampuan menulis SQL - sebaliknya, memahami apa yang terjadi di balik layar membuat Anda jauh lebih efektif dalam menggunakan alat analitik apa pun. Namun, ini menghilangkan pekerjaan yang berulang.
Perbedaan praktisnya: daripada menghabiskan berjam-jam untuk menulis dan mendebug kueri untuk mensegmentasi pelanggan, Anda cukup menghabiskan 5 menit untuk mendefinisikan aturan dan sisanya untuk menganalisis apa arti segmen-segmen tersebut bagi bisnis. Ini bukan sihir, ini hanya menghilangkan gesekan antara "saya punya pertanyaan" dan "saya punya jawaban".
Jika Anda menghabiskan setengah hari untuk mengekstrak data daripada menganalisisnya, Anda mungkin sudah menyadari di mana letak kemacetan.
Dari SQL manual ke wawasan otomatis
Platform seperti ELECTE logika CASE WHEN melalui antarmuka tanpa kode. Tetapkan aturan segmentasi dengan beberapa klik saja, tanpa perlu menulis satu baris kode pun. Hasilnya: analisis yang sebelumnya membutuhkan waktu berjam-jam kini siap dalam hitungan menit, dapat diakses oleh seluruh tim tanpa bergantung pada tim IT.
Di balik layar, platform ini menjalankan logika kondisional yang serupa—dan seringkali jauh lebih canggih—membebaskan Anda dari tugas-tugas yang berulang. Hal ini memungkinkan manajer dan analis untuk fokus pada "mengapa" di balik angka-angka, daripada "bagaimana" mengekstraknya.
Pertanyaan Umum tentang CASE WHEN
Bahkan setelah melihat banyak contoh, wajar jika Anda masih memiliki beberapa pertanyaan. Mari kita jawab pertanyaan paling umum yang muncul saat mulai menggunakan CASE WHEN di SQL.
Apa perbedaan antara CASE dan IF dalam SQL?
Perbedaan utamanya: portabilitas. CASE WHEN adalah bagian dari standar SQL (ANSI SQL), yang berarti kode Anda akan berfungsi hampir di semua database modern, mulai dari PostgreSQL dan MySQL hingga SQL Server dan Oracle.
Pernyataan IF(), sebaliknya, sering kali merupakan fungsi khusus dari dialek SQL tertentu, seperti T-SQL milik SQL Server. Meskipun terlihat lebih singkat untuk kondisi biner sederhana, CASE WHEN adalah pilihan para profesional untuk menulis kode yang mudah dibaca dan berfungsi di mana saja tanpa perlu modifikasi.
Bisakah saya menggunakan CASE WHEN dalam klausa WHERE?
Tentu saja. Ini bukan penggunaan yang paling umum, tetapi dalam skenario tertentu sangat kuat untuk membuat filter kondisional yang kompleks. Bayangkan, misalnya, Anda ingin mengambil semua pelanggan "premium", atau hanya pelanggan "standard" yang tidak melakukan pembelian selama lebih dari satu tahun.
Begini cara Anda dapat mengatur logika:
SELECT NomeCliente, UltimoAcquistoFROM ClientiWHERECASEWHEN Segmento = 'Premium' THEN 1WHEN Segmento = 'Standard' AND UltimoAcquisto < '2023-01-01' THEN 1ELSE 0END = 1;
Pada dasarnya, Anda sedang mengatakan kepada database: "hanya pertimbangkan baris-baris di mana logika kompleks ini mengembalikan nilai 1".
Berapa banyak kondisi WHEN yang bisa saya miliki?
Secara teori, standar SQL tidak menetapkan batas ketat pada jumlah WHEN. Namun dalam kenyataannya, sebuah query dengan puluhan kondisi menjadi mimpi buruk untuk dibaca, dipelihara, dan dioptimalkan.
Jika Anda mendapati diri Anda menulis CASE yang tidak ada habisnya, anggap itu sebagai tanda peringatan. Kemungkinan ada cara yang lebih cerdas untuk menyelesaikan masalah tersebut, misalnya dengan menggunakan lookup table (tabel pemetaan) agar query menjadi lebih bersih dan efisien.
Bagaimana CASE WHEN menangani nilai NULL?
Di sinilah Anda perlu berhati-hati. Nilai NULL dalam SQL bersifat khusus. Kondisi seperti WHEN Colonna = NULL tidak akan pernah berfungsi seperti yang Anda harapkan, karena dalam SQL NULL tidak sama dengan apa pun, bahkan dengan dirinya sendiri. Untuk memeriksa apakah suatu nilai adalah NULL, sintaks yang benar selalu WHEN Colonna IS NULL.
Dalam kasus seperti ini, klausa ELSE menjadi sahabat terbaik Anda. Klausa ini memungkinkan Anda menangani secara bersih dan dapat diprediksi semua kasus yang tidak tercakup oleh WHEN, termasuk NULL. Gunakan untuk menetapkan nilai default dan Anda akan terhindar dari hasil yang tidak terduga dalam analisis Anda.

Komentar
Belum ada komentar — mulai percakapannya.