เอ็กซ์เพรสชันที่มีเงื่อนไข

คุณใช้เอ็กซ์เพรสชันที่มีเงื่อนไขเพื่อสร้างเอ็กซ์เพรสชันที่แปลงค่า

เอ็กซ์เพรสชันที่มีเงื่อนไขที่อธิบายไว้ในส่วนนี้เป็นบล็อคองค์ประกอบสำหรับการสร้างเอ็กซ์เพรสชัน ซึ่งแปลงค่าจากรูปแบบหนึ่งเป็นอีกรูปแบบหนึ่ง

ทำตามกฎต่อไปนี้

  • ในคำสั่ง CASE AND มีผลบังคับก่อน OR
  • สตริงต้องอยู่ในเครื่องหมายคำพูดเดี่ยว
เอ็กซ์เพรสชัน ตัวอย่าง คำอธิบาย รูปแบบคำสั่ง

CASE (If)

CASE

WHEN score-par < 0 THEN 'Under Par'

WHEN score-par = 0 THEN 'Par'

WHEN score-par = 1 THEN 'Bogey'

WHEN score-par = 2 THEN 'Double Bogey'

ELSE 'Triple Bogey or Worse'

END

ประมวลผลเงื่อนไข WHEN แต่ละรายการ และถ้าตรงกัน ให้ระบุค่าในเอ็กซ์เพรสชัน THEN ที่สอดคล้องกัน

ถ้าไม่มีเงื่อนไข WHEN ตรงกัน ระบบจะระบุค่าดีฟอลต์ที่ระบุไว้ในเอ็กซ์เพรสชัน ELSE ถ้าไม่ได้ระบุเอ็กซ์เพรสชัน ELSE ระบบจะเพิ่ม ELSE NULL โดยอัตโนมัติ

หมายเหตุ: โปรดดู แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้คำสั่ง CASE ในการวิเคราะห์และการแสดงข้อมูล

CASE WHEN request_condition1 THEN expr1 ELSE expr2 END

CASE (Switch)

CASE Score-par

WHEN -5 THEN 'Birdie on Par 6'

WHEN -4 THEN 'Must be Tiger'

WHEN -3 THEN 'Three under par'

WHEN -2 THEN 'Two under par'

WHEN -1 THEN 'Birdie'

WHEN 0 THEN 'Par'

WHEN 1 THEN 'Bogey'

WHEN 2 THEN 'Double Bogey'

ELSE 'Triple Bogey or Worse'

END

เรียกอีกอย่างว่า CASE (Lookup) มีการตรวจสอบค่าของเอ็กซ์เพรสชันแรก จากนั้นต่อด้วยเอ็กซ์เพรสชัน WHEN ถ้าเอ็กซ์เพรสชันแรกตรงกับเอ็กซ์เพรสชัน WHEN ระบบจะระบุค่าในเอ็กซ์เพรสชัน THEN ที่สอดคล้องกัน

ถ้าไม่มีเอ็กซ์เพรสชัน WHEN ตรงกัน ระบบจะระบุค่าดีฟอลต์ที่ระบุไว้ในเอ็กซ์เพรสชัน ELSE ถ้าไม่ได้ระบุเอ็กซ์เพรสชัน ELSE ระบบจะเพิ่ม ELSE NULL โดยอัตโนมัติ

ถ้าเอ็กซ์เพรสชันแรกตรงกับเอ็กซ์เพรสชันในส่วนของคำสั่ง WHEN หลายรายการ ระบบจะระบุเฉพาะเอ็กซ์เพรสชันตามหลังรายการแรกที่ตรงกันเท่านั้น

หมายเหตุ โปรดดู แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้คำสั่ง CASE ในการวิเคราะห์และการแสดงข้อมูล

CASE expr1 WHEN expr2 THEN expr3 ELSE expr4 END

IfCase > ELSE

-

-

ELSE [expr]

IfCase > IFNULL

-

-

IFNULL([expr], [value])

IfCase > NULLIF

-

-

NULLIF([expr], [expr])

IfCase > WHEN

-

-

WHEN [Condition] THEN [expr]

IfCase > CASE

-

-

CASE WHEN [Condition] THEN [expr] END

SwitchCase > ELSE

-

-

ELSE [expr]

SwitchCase >IFNULL

-

-

IFNULL([expr], [value])

SwitchCase > NULLIF

-

-

NULLIF([expr], [expr])

SwitchCase > WHEN

-

-

WHEN [Condition] THEN [expr]

วิธีปฏิบัติที่ดีที่สุดสำหรับการใช้คำสั่ง CASE ในการวิเคราะห์และการแสดงข้อมูล

เมื่อใช้คำสั่ง CASE ในรายงานและเวิร์กบุค ให้พิจารณาคอลัมน์รายงานและลำดับของการสรุปรวม เนื่องจากปัจจัยเหล่านี้จะมีผลต่อวิธีการคำนวณเอ็กซ์เพรสชันและผลรวมย่อย

  • โดยทั่วไปแล้ว เมื่อใช้เอ็กซ์เพรสชัน CASE ให้ตรวจสอบให้แน่ใจว่าคอลัมน์ใดๆ ที่ใช้ในเอ็กซ์เพรสชันรวมอยู่ในรายงาน

  • หากลำดับของการสรุปรวมมีความสำคัญ ให้เปลี่ยนกฎการสรุปรวมรายงานจากดีฟอลต์เป็นผลรวม
  • หากต้องประมวลผลเงื่อนไขก่อนที่จะคำนวณการสรุปรวม (ตัวอย่างเช่น หากคอลัมน์ที่ฟิลเตอร์ไม่แสดงในรายงานด้วย) ให้ใช้ฟังก์ชัน FILTER

ตัวอย่าง

ตัวอย่างนี้จะใช้ข้อมูลสำหรับแบรนด์ ประเภทผลิตภัณฑ์ และรายรับ
คำอธิบาย GUID-5837A210-154F-4FAC-922D-EBF0A21C349A-default.png มีดังนี้
.png

ในการใช้เงื่อนไขเพื่อตั้งค่ารายรับของกล้องเป็น 0 ให้สร้างเอ็กซ์เพรสชันเงื่อนไขต่อไปนี้: CASE WHEN Product_Type = ‘Camera’ THEN 0 ELSE Revenue END

เมื่อ Product_Type ไม่รวมอยู่ในรายงาน ข้อมูลจะไม่พร้อมให้ประมวลผลเอ็กซ์เพรสชัน เนื่องจากมี Product_Type และผลลัพธ์จะเป็น:
คำอธิบาย GUID-22873F41-3679-45DF-821D-4167594FE069-default.png มีดังนี้
.png

เมื่อเพิ่ม PRODUCT_TYPE ไปยังรายงานและตั้งค่าการสรุปรวมรายงานเป็น SUM ผลลัพธ์จะสรุปรวมหลังจากคำนวณค่าระดับพื้นฐาน:
คำอธิบาย GUID-0BEEE7E1-73CE-4BAA-98A2-683830E18E12-default.png มีดังนี้
.png

ทางเลือกในการใช้ CASE เพื่อใช้เอ็กซ์เพรสชันฟิลเตอร์: FILTER(Revenue using Product_Type != ‘Camera’) เอ็กซ์เพรสชันได้รับการคำนวณจากคอลัมน์รายงานโดยอิสระ และการสรุปรวมจะใช้หลังการคำนวณ:
คำอธิบาย GUID-F428B1A7-A9FF-425B-80F1-BB709769CE5C-default.png มีดังนี้
.png