Pernyataan CASE (MDX)
Memungkinkan Anda mengembalikan nilai tertentu secara kondisional dari beberapa perbandingan. Ada dua jenis pernyataan kasus:
Pernyataan kasus sederhana yang membandingkan ekspresi dengan sekumpulan ekspresi sederhana untuk mengembalikan nilai tertentu.
Pernyataan kasus yang dicari yang mengevaluasi sekumpulan ekspresi Boolean untuk mengembalikan nilai tertentu.
Sintaks
Simple Case Statement
CASE [input_expression]
WHEN when_expression THEN when_true_result_expression
[...n]
[ELSE else_result_expression]
END
Search Case Statement
CASE
WHEN Boolean_expression THEN when_true_result_expression
[...n]
[ELSE else_result_expression]
END
Argumen
input_expression
Ekspresi Ekspresi Multidarisional (MDX) yang diselesaikan ke nilai skalar.
when_expression
Nilai skalar yang ditentukan tempat input_expression dievaluasi, yang ketika dievaluasi ke true, mengembalikan nilai skalar else_result_expression.
when_true_result_expression
Nilai skalar dikembalikan ketika klausul WHEN mengevaluasi ke true.
else_result_expression
Nilai skalar dikembalikan ketika tidak ada klausul WHEN yang dievaluasi ke true.
Boolean_expression
Ekspresi MDX yang mengevaluasi ke nilai skalar.
Keterangan
Jika tidak ada klausa ELSE, dan semua klausa WHEN dievaluasi ke false, hasilnya adalah sel kosong.
Ekspresi Kasus Sederhana
MDX mengevaluasi ekspresi kasus sederhana dengan menyelesaikan input_expression ke nilai skalar. Nilai skalar ini kemudian dibandingkan dengan nilai skalar when_expression. Jika dua nilai skalar cocok, pernyataan CASE mengembalikan nilai when_true_expression. Jika dua nilai skalar tidak cocok, klausa WHEN berikutnya dievaluasi. Jika semua klausul WHEN mengevaluasi ke false, nilai else_result_expression dari klausa ELSE, jika ada, dikembalikan.
Dalam contoh berikut, ukuran Jumlah Pesanan Penjual dievaluasi terhadap beberapa klausul WHEN dan mengembalikan hasil berdasarkan nilai pengukuran Jumlah Pesanan Penjual untuk setiap tahun. Untuk nilai Jumlah Urutan Penjual yang tidak cocok dengan nilai skalar yang ditentukan dalam when_expression dalam klausa WHEN, nilai skalar else_result_expression dikembalikan.
WITH MEMBER [Measures].x AS
CASE [Measures].[Reseller Order Count]
WHEN 0 THEN 'NONE'
WHEN 1 THEN 'SMALL'
WHEN 2 THEN 'SMALL'
WHEN 3 THEN 'MEDIUM'
WHEN 4 THEN 'MEDIUM'
WHEN 5 THEN 'LARGE'
WHEN 6 THEN 'LARGE'
ELSE 'VERY LARGE'
END
SELECT Calendar.[Calendar Year] on 0
, NON EMPTY [Geography].[Postal Code].Members ON 1
FROM [Adventure Works]
WHERE [Measures].x
Ekspresi Kasus yang Dicari
Untuk menggunakan ekspresi kasus untuk melakukan evaluasi yang lebih kompleks, gunakan ekspresi kasus yang dicari. Variasi ekspresi pencarian ini memungkinkan Anda mengevaluasi apakah ekspresi input berada dalam rentang nilai. MDX mengevaluasi klausul WHEN dalam urutan klausul ini muncul dalam pernyataan CASE.
Dalam contoh berikut, ukuran Jumlah Pesanan Penjual dievaluasi terhadap Boolean_expression yang ditentukan untuk masing-masing dari beberapa klausa WHEN. Hasil dikembalikan berdasarkan nilai pengukuran Jumlah Pesanan Penjual untuk setiap tahun. Karena klausul WHEN dievaluasi dalam urutan muncul, semua nilai yang lebih besar dari 6 dapat dengan mudah ditetapkan nilai "SANGAT BESAR" tanpa harus menentukan setiap nilai secara eksplisit. Untuk nilai Jumlah Urutan Penjual yang tidak ditentukan dalam klausa WHEN, nilai skalar else_result_expression dikembalikan.
WITH MEMBER [Measures].x AS
CASE
WHEN [Measures].[Reseller Order Count] > 6 THEN 'VERY LARGE'
WHEN [Measures].[Reseller Order Count] > 4 THEN 'LARGE'
WHEN [Measures].[Reseller Order Count] > 2 THEN 'MEDIUM'
WHEN [Measures].[Reseller Order Count] > 0 THEN 'SMALL'
ELSE "NONE"
END
SELECT Calendar.[Calendar Year] on 0,
NON EMPTY [Geography].[Postal Code].Members on 1
FROM [Adventure Works]
WHERE [Measures].x