Câu lệnh Case When trong SQL

Câu lệnh CASE WHEN (hay CASE) là một truy vấn vô cùng hữu ích trong SQL, nó cho phép bạn thực hiện các phép so sánh và trả về kết quả tương ứng dựa trên từng trường hợp cụ thể. CASE hoạt động tương tự như câu lệnh IF trong Microsoft Excel hay các ngôn ngữ lập trình, giúp bạn xử lý dữ liệu một cách linh hoạt và hiệu quả. 

Hãy cùng UniTrain tìm hiểu ngay cách sử dụng lệnh Case trong SQL nhé!

Cách thức hoạt động: 

  1. So sánh biểu thức: CASE sẽ so sánh biểu thức với từng điều kiện được liệt kê ở biểu thức: WHEN…THEN (Nếu…thì…). 
  2. Trả về kết quả: Khi tìm thấy điều kiện đúng, CASE sẽ trả về kết quả tương ứng. 
  3. Dừng xử lý: Sau khi trả về kết quả, CASE sẽ dừng xử lý các điều kiện còn lại. 
  4. Mệnh đề ELSE: Nếu không có điều kiện nào đúng, CASE sẽ trả về kết quả được chỉ định trong mệnh đề ELSE (nếu có). 
  5. Giá trị NULL: Nếu không có mệnh đề ELSE và không có điều kiện nào đúng, CASE sẽ trả về giá trị NULL. 

Lệnh CASE đơn giản: 

Cú pháp:  

SELECT Tên cột 1, Tên cột 2, Tên cột n 

CASE 

WHEN Giá_trị_1 THEN Biểu_thức_kết_quả_1  

WHEN Giá_trị_2 THEN Biểu_thức_kết_quả_2 

ELSE Biểu_thức_kết_quả_n 

END 

FROM Tên_bảng 

Trong đó:  

Câu lệnh END AS được sử dụng trong hai trường hợp chính trong SQL: 

– Khi sử dụng câu lệnh CASE WHEN để thực hiện logic điều kiện, bạn cần sử dụng END để đánh dấu kết thúc khối lệnh. 
– Sau END, bạn có thể sử dụng AS để đặt tên cho biểu thức được trả về bởi câu lệnh CASE. 
Ví dụ:  

Giả sử chúng ta cần tính tiền thưởng cho nhân viên dựa trên số lần tham gia tổ chức các dự án quan trọng và điều kiện để được thưởng là :

– Nếu Special Projects <5: thưởng 100  
– Nếu Special Projects >5: thưởng 200 

Cột NewSalary sẽ hiển thị tiền lương sau khi đã được cộng tiền thưởng

Chúng ta có:

SELECT Employee_Name, EmpID, SpecialProjectsCount, Salary, 

CASE  

     WHEN SpecialProjectsCount BETWEEN 0 AND 5 THEN Salary + 100 

               WHEN SpecialProjectsCount > 5 THEN Salary + 200 

     ELSE Salary 

END AS NewSalary  

FROM HRDataset 

Sqlcase1

Lệnh CASE so sánh và trả kết quả:

Cú pháp:  

SELECT Tên cột 1, Tên cột 2, Tên cột n 

CASE 

WHEN Biểu_thức_logic_1 THEN Biểu_thức_kết_quả_1  

WHEN Biểu_thức_logic_2 THEN Biểu_thức_kết_quả_2 

ELSE Biểu_thức_kết_quả_n 

END 

Ví dụ:  

Giả sử chúng ta cần đánh giá mức độ cống hiến của nhân viên dựa trên số lần tham gia tổ chức các dự án quan trọng và điều kiện đánh giá là:

– Nếu Special Projects < 0: “Không có” 

– Nếu Special Projects < 5: “Tốt”

– Nếu Special Projects > 5: “Xuất sắc” 

Kết quả sau khi đánh giá sẽ hiển thị ở cột Note

Chúng ta có: 

SELECT Employee_Name, EmpID, SpecialProjectsCount,  

CASE   

WHEN SpecialProjectsCount = 0 THEN ‘Không có’ 

WHEN SpecialProjectsCount BETWEEN 1 AND 5 THEN ‘Tốt’ 

WHEN SpecialProjectsCount > 5 THEN ‘Xuất sắc’ 

END AS Note   

FROM HRDataset 

Sqlcase2

Xem thêm: 

Phân tích dữ liệu cùng SQL: Các câu lệnh truy vấn đơn giản

Vai trò và kỹ năng của Data Analyst trong năm 2024

Khóa học Ứng dụng SQL trong xử lý dữ liệu

Combo 3 Khóa học Data Analytics for Professionals

 

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

1 + 1 = ? (Nhập Haii để trả lời đúng)

Bài viết liên quan
Khám phá hàm Lag và Lead trong SQL

Trong phân tích dữ liệu, hàm LAG() và LEAD() sẽ là công cụ hỗ trợ đắc lực cho việc so sánh giá trị hiện tại với giá trị liền trước hoặc liền

Xem thêm
[RECAP] Training Top 20 – myInsight – MDS Datathon Challenge 2025 – CLB Toán ứng dụng & Khoa học dữ liệu (MDS) – Đại học Ngoại Thương CSII TP. HCM (FTU2)

Tối ngày 18/05/2025, buổi training dành riêng cho Top 20 đội thi xuất sắc nhất cuộc thi myInsight – MDS Datathon Challenge 2025 đã diễn ra vô cùng thành công thông

Xem thêm
Khám Phá Tính Năng Nhóm và Phân Nhóm Dữ Liệu trong Power BI

Trong quá trình xây dựng biểu đồ, Power BI Desktop sẽ tự động tổng hợp dữ liệu thành các nhóm dựa trên các giá trị có trong tập dữ liệu gốc.

Xem thêm
[RECAP] Chuỗi Workshop MARKET-A – CLB Chứng khoán SCUE – Đại học Kinh tế TP. HCM (UEH)

Chiều ngày 15/05/2025 vừa rồi, UniTrain đã hân hạnh có mặt với vai trò là Nhà tài trợ Bạc tại buổi Workshop 2: OPTIVEST thuộc chuỗi chương trình Workshop MARKET-A do

Xem thêm