SQL การใช้งาน CASE Expression

CASE Expression ใน SQL ใช้สำหรับการเขียนเงื่อนไขเชิงตรรกะ (logic conditions) ภายในคำสั่ง SQL SELECT, UPDATE, DELETE หรือคำสั่งอื่นๆ ที่สามารถทำการประมวลผลข้อมูลตามเงื่อนไขที่เรากำหนดได้ ซึ่ง CASE มีรูปแบบหลัก ๆ อยู่ 2 แบบ คือ Simple CASE และ Searched CASE

รูปแบบของ CASE Expression

1. Simple CASE Expression

Simple CASE Expression ทำงานโดยเปรียบเทียบค่าในฟิลด์หนึ่งกับค่าคงที่หลาย ๆ ค่า จากนั้นจะส่งคืนค่าที่ตรงกับเงื่อนไข

CASE column_name
    WHEN value1 THEN result1
    WHEN value2 THEN result2
    ELSE result_default
END

2. Searched CASE Expression

Searched CASE Expression ทำงานโดยตรวจสอบเงื่อนไขที่ซับซ้อนมากขึ้น เช่น การใช้เงื่อนไข > หรือ < และอื่นๆ

CASE
    WHEN condition1 THEN result1
    WHEN condition2 THEN result2
    ELSE result_default
END

สร้างตารางข้อมูลตัวอย่าง

สร้างตารางชื่อ Employees ซึ่งประกอบด้วยคอลัมน์ EmployeeID, EmployeeName, Department, และ Salary ด้วยคำสั่งดังนี้

SQL
CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY,
    EmployeeName VARCHAR(100),
    Department VARCHAR(50),
    Salary DECIMAL(10, 2)
);

INSERT INTO Employees (EmployeeID, EmployeeName, Department, Salary)
VALUES
(1, 'John Doe', 'IT', 75000),
(2, 'Jane Smith', 'HR', 55000),
(3, 'Sam Wilson', 'Finance', 65000),
(4, 'Nina Brown', 'IT', 90000),
(5, 'Lily White', 'HR', 60000);

จะได้ตารางชื่อ Employees ซึ่งประกอบด้วยข้อมูลดังนี้

ตัวอย่างการใช้ Simple CASE Expression

ในตัวอย่างนี้ เราต้องการแสดงผลข้อมูลพนักงานพร้อมทั้งแสดงข้อความว่าพนักงานแต่ละคนอยู่แผนกอะไร โดยใช้ Simple CASE Expression ดังนี้

SQL
SELECT EmployeeName,
       Department,
       CASE Department
           WHEN 'IT' THEN 'Information Technology'
           WHEN 'HR' THEN 'Human Resources'
           WHEN 'Finance' THEN 'Finance Department'
           ELSE 'Other Department'
       END AS DepartmentFullName
FROM Employees;

ในตัวอย่างนี้ Simple CASE เปรียบเทียบค่าของคอลัมน์ Department กับค่าที่กำหนดไว้ และแสดงผลเป็นข้อความที่สอดคล้องกับเงื่อนไขนั้น

ตัวอย่างการใช้ Searched CASE Expression

ในตัวอย่างนี้ เราต้องการจัดกลุ่มเงินเดือนของพนักงานว่าอยู่ในช่วงไหน โดยใช้ Searched CASE Expression ดังนี้

SQL
SELECT EmployeeName,
       Salary,
       CASE 
           WHEN Salary < 60000 THEN 'Low Salary'
           WHEN Salary BETWEEN 60000 AND 80000 THEN 'Medium Salary'
           WHEN Salary > 80000 THEN 'High Salary'
           ELSE 'Unknown'
       END AS SalaryCategory
FROM Employees;

ในตัวอย่างนี้ Searched CASE Expression ตรวจสอบค่าเงินเดือน (Salary) ตามเงื่อนไขที่กำหนดเพื่อจัดกลุ่มเป็น Low, Medium, และ High

การใช้ CASE ในการคำนวณคอลัมน์ใหม่

ในตัวอย่างนี้ เราต้องการคำนวณโบนัสให้พนักงานตามเงินเดือนที่ได้รับ โดยสมมติว่าพนักงานที่มีเงินเดือนสูงจะได้รับโบนัสสูง

SQL
SELECT EmployeeName,
       Salary,
       CASE 
           WHEN Salary < 60000 THEN Salary * 0.05
           WHEN Salary BETWEEN 60000 AND 80000 THEN Salary * 0.07
           WHEN Salary > 80000 THEN Salary * 0.1
           ELSE 0
       END AS Bonus
FROM Employees;

ในตัวอย่างนี้ใช้ CASE เพื่อคำนวณโบนัสโดยอิงจากเงินเดือนของพนักงานแต่ละคน

สรุป

CASE Expression ใน SQL เป็นเครื่องมือที่มีประโยชน์มากสำหรับการสร้างเงื่อนไขแบบต่างๆ ภายในคำสั่ง SQL สามารถใช้ Simple CASE เพื่อเปรียบเทียบค่ากับเงื่อนไขที่เฉพาะเจาะจง หรือใช้ Searched CASE เพื่อสร้างเงื่อนไขที่ซับซ้อนกว่าได้อย่างมีประสิทธิภาพ

แชร์เรื่องนี้