Pernyataan CASE
mengevaluasi satu atau beberapa kondisi dan menampilkan hasil saat kondisi pertama terpenuhi, atau hasil default jika tidak ada kondisi yang terpenuhi.
Lihat juga: IF.
Contoh penggunaan
Penggunaan umum untuk CASE
adalah membuat kategori atau pengelompokan data baru. Misalnya, untuk mengelompokkan nilai negara tertentu ke dalam dimensi Wilayah Penjualan, Anda dapat membuat pernyataan CASE
seperti ini:
CASE WHEN Country IN ("USA","Canada","Mexico") THEN "North America" WHEN Country IN ("England","France") THEN "Europe" ELSE "Other" END
Sintaks
CASE WHEN condition THEN result [WHEN condition THEN result] [...] [ELSE else_result] END
Parameter
condition
- Kolom atau ekspresi logis. KlausaWHEN
mengevaluasicondition
dan menampilkan benar jika kondisi yang ditentukan terpenuhi, atau salah jika kondisi tidak terpenuhi.result
- Kolom atau ekspresi dari jenis apa pun. Setiap klausaWHEN
harus memiliki klausaTHEN
yang cocok, yang menentukan hasil jikaWHEN condition
tersebut benar. Jika ada beberapa klausaWHEN
, pernyataanCASE
akan menampilkanresult
untukcondition
benar yang pertama.else_result
(opsional) - Kolom atau ekspresi dari jenis apa pun. KlausaELSE
else_result
menentukan hasil default untuk pernyataanCASE
. Klausa ini ditampilkan jika tidak ada klausaWHEN
yang benar. Jika pernyataanCASE
tidak memiliki klausaELSE
, dan tidak ada klausaWHEN
yang benar, pernyataanCASE
akan menampilkanNULL
.
Pernyataan CASE
hanya dapat memiliki satu klausa ELSE
.
Cara kerja CASE
yang ditelusuri
Pernyataan CASE
yang ditelusuri dimulai dengan kata kunci CASE
dan diakhiri dengan kata kunci END
. Di antara keduanya, Anda akan memiliki beberapa bagian atau klausa:
WHEN
: Kondisi yang ingin dievaluasi. Anda dapat memiliki beberapa klausaWHEN
dalam satu pernyataanCASE
.THEN
: Hasil yang ditampilkan jika kondisi klausaWHEN
benar. Anda harus memiliki satu klausaTHEN
untuk setiap klausaWHEN
dalam pernyataanCASE
.ELSE
: Opsional. Jika tidak ada kondisi klausaWHEN
yang benar,CASE
akan menampilkan nilai dalam klausaELSE
, atauNULL
jika tidak ada klausaELSE
yang ditentukan.
CASE
mengevaluasi setiap klausa WHEN
yang berurutan dan menampilkan hasil pertama yang kondisinya benar. Klausa WHEN
yang tersisa dan hasil ELSE
tidak akan dievaluasi. Jika semua kondisi WHEN
bernilai salah atau NULL
, CASE
akan menampilkan hasil ELSE
, atau jika tidak ada klausa ELSE
, NULL
akan ditampilkan.
Contoh
Memeriksa ketidaksetaraan
CASE WHEN Medium != "cpc" THEN "free" ELSE "paid" END
Mengklasifikasikan nilai dimensi numerik ke dalam bucket terpisah
Misalnya, Anda dapat memisahkan pesanan menjadi "Kecil", "Sedang", atau "Besar" berdasarkan jumlah pesanan:
CASE WHEN Amount < 20 THEN "Small" WHEN Amount >= 20 and Amount < 100 THEN "Medium" WHEN Amount >= 100 THEN "Large" END
Mengevaluasi kondisi logis AND
CASE WHEN Country ISO Code = "US" AND Medium = "cpc" THEN "US - Paid" ELSE "other" END
Mengevaluasi kondisi logis AND/OR
CASE WHEN REGEXP_MATCH(Video Title, ".*Google Analytics*") AND is_livestream = TRUE OR Video Length > 600 THEN "GA Livestream or long video" END
Menampilkan kolom atau nilai yang berbeda bergantung pada nilai parameter
Contoh 1: Menampilkan dimensi berdasarkan nilai parameter yang dipilih. Anda dapat menggunakan teknik ini untuk memungkinkan pengguna mengubah dimensi perincian yang digunakan oleh diagram.
CASE WHEN Breakdown = "Product Category" THEN Product Category WHEN Breakdown = "Store" THEN Store END
Anda juga dapat menulisnya menggunakan sintaksis CASE sederhana:
CASE Breakdown WHEN "Product Category" THEN Product Category WHEN "Store" THEN Store END
Contoh 2: Menampilkan metrik yang berbeda berdasarkan nilai parameter.
CASE WHEN Show Adjusted Cost = TRUE THEN Cost + Adjustments ELSE Cost END
Pernyataan CASE
bertingkat
Anda dapat melakukan penyusunan bertingkat untuk pernyataan CASE
guna membuat logika percabangan yang lebih kompleks:
CASE WHEN REGEXP_CONTAINS(SKU, "Hats") THEN CASE WHEN Color = "blue" THEN "BLUE HAT" ELSE "JUST A HAT" END ELSE "NOT A HAT" END