SQL Server: CASE-WHEN | V1Study

Học viện Đào tạo và Công nghệ V1Study
  • Đào tạo Độ tuổi từ 5 - 11 Độ tuổi từ 12 - 17 Từ 18 tuổi
  • Lập trình Python Lập trình C C++ Java C# - C Sharp Android Scratch Pascal Robot mBot
  • Web ReactJS HTML5 CSS3 JavaScript Node.js JSP ASP.NET Core jQuery PHP
  • FW-CMS Laravel AngularJS Flutter Magento Bootstrap VueJS CodeIgnitor WordPress Sass Drupal
  • Video Video Python Video Lập trình C Video C# Video Java Video HTML5-CSS3-JavaScript Video SQL Server Video PHP Video jQuery Video Android Video C++ Video Scratch
  • Video1 Video XML-JSON Video MySQL Video Excel Video Giải thuật và Lập trình Video Sức khỏe Video Drupal Video mBot Video Giáo dục - Khoa học
  • Other Unity Giải thuật và lập trình Giải thuật và lập trình - C CCNA Mạng máy tính Design Patterns English Facebook SEO Git Tin học đại cương Japanese App-Uti Download
  • Data SQL Server XML JSON MySQL
  • News
Học viện Đào tạo và Công nghệ V1Study ≡ SQL Server Bài học Danh sách bài học Bài 1. Download, Cài đặt, Giới thiệu SQL Server Bài 2. Quy tắc chung Bài 3. Quy tắc đặt tên Bài 4. Kiểu dữ liệu hệ thống Bài 5. Kiểu dữ liệu tự tạo Bài 6. Comment (Chú thích) Bài 7. Thao tác với DataBase Bài 8. NULL và NOT NULL Bài 9. IDENTITY Bài 10. CREATE TABLE (Tạo bảng) Bài 11. Thao tác với bảng (TABLE) Bài 12. Thao tác với cột (Column) Bài 13. Primary Key (Khóa chính) Bài 14. Foreign Key (Khoá ngoại) Bài 15. Ràng buộc CHECK Bài 16. Ràng buộc DEFAULT Bài 17. Ràng buộc UNIQUE Bài 18. INSERT Bài 19. INSERT với SELECT Bài 20. SELECT Bài 21. SELECT với AS (Alias) Bài 22. SELECT với JOIN Bài 23. SELECT với nhiều JOIN Bài 24. LEFT, RIGHT & FULL JOIN Bài 25. SELECT với INTO Bài 26. SELECT với WHERE Bài 27. DISTINCT Bài 28. ORDER BY Bài 29. GROUP BY với HAVING Bài 30. CASE-WHEN Bài 31. TOP Bài 32. TOP với PERCENT Bài 33. TOP với WITH TIES Bài 34. UPDATE Bài 35. DELETE Bài 36. NOT Bài 37. IN() và NOT IN() Bài 38. BETWEEN và NOT BETWEEN Bài 39. LIKE và NOT LIKE Bài 40. EXISTS và NOT EXISTS Bài 41. Các phép toán so sánh Bài 42. Chỉ mục (INDEX) Bài 43. Khung nhìn (VIEW) Bài 44. Mệnh đề WITH Bài 45. Thủ tục lưu trữ (SP) Bài 46. Cơ bản về Trigger Bài 47. Tạo các trigger DML Bài 48. Trigger AFTER Bài 49. Trigger INSTEAD OF Bài 50. IF-ELSE Bài 51. FUNCTION (Hàm) tự tạo trong SQL Server Bài 52. Lược đồ Thực thể-Quan hệ (Entity-Relationship Diagram - E-R D) Bài 53. Chuẩn hóa dữ liệu (Normalization) Bài tập Practical 0 Practical 1 Practical 2 Practical 3 Practical 4 Practical 5 Practical 6 Practical 7 Practical 8 Practical 9 Practical 10 Practical 11 Practical 12 Functions Hàm tập hợp (Aggregate) Hàm Convert() Hàm Cast() Hàm ngày tháng và thời gian Hàm toán học (Math) Hàm xếp hạng (Ranking) Hàm xử lý chuỗi Hàm pivot và unpivot Videos Cài đặt SQL Server 2012 Cách thao tác với Database Tạo bảng (Create Table) SELECT đơn giản Tham khảo Cài đặt SQL Server 2019 Developer Edition trên Windows Cách tìm kiếm phân biệt chữ hoa và thường Một số cách tăng hiệu xuất truy vấn trong SQL Server Đặt lại thứ tự cho Identity Khắc phục lỗi feature NetFx3 khi cài đặt SQL Server 2012 Cách cài đặt SQL Server trên máy Mac Solutions Solution Practical 1 Taught Xem dữ liệu trên nhiều bảng Distinct, Clustered và Non-Clustered Index View Trigger C2010G-SQL-Buổi 1 C2010G-SQL-Buổi 2 C2010G-SQL-Buổi 3 SQL Server: CASE-WHEN Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên

Tổng quan

CASE-WHEN dùng để thiết lập điều kiện rẽ nhánh trong SQL. CASE-WHEN có thể áp dụng được cho các câu lệnh DML gồm SELECT và UPDATE.

Dưới đây sẽ hướng dẫn cách sử dụng CASE-WHEN cho câu lệnh SELECT, bạn có thể xem cách sử dụng CASE-WHEN cho câu lệnh UPDATE tại bài viết về UPDATE.

Khi sử dụng cho SELECT thì CASE-WHEN sẽ thể hiện ở một cột riêng và ta có thể đặt bí danh cho cột này.

Cú pháp

Có hai cú pháp sử dụng CASE-WHEN được thể hiện cụ thể như sau:

Cú pháp 1

SELECT Các_cột, Bí_danh = CASE Tên_cột

WHEN Giá_trị1 then Hiển_thị1

WHEN Giá_trị2 then Hiển_thị2

...

ELSE Hiển_thị

END

FROM Các_bảng_liên_kết [WHERE Điều_kiện];

Hoặc:

SELECT Các_cột, CASE Tên_cột

WHEN Giá_trị1 then Hiển_thị1

WHEN Giá_trị2 then Hiển_thị2

...

ELSE Hiển_thị

END AS Bí_danh

FROM Các_bảng_liên_kết [WHERE Điều_kiện];

Ví dụ cho Cú pháp 1

Giả sử bảng Student có các dữ liệu sau đây:

studentid studentname gender
1 A 1
2 B 0
3 C Null
4 A 0

Bây giờ ta muốn hiển thị toàn bộ dữ liệu của bảng Student trong đó cột gender sẽ hiển thị 'Male' thay cho 1, 'Female' thay cho 0 và 'Unknow' thay cho Null. Ta làm như sau:

SELECT studentid, studentname, GENDER = CASE gender

WHEN 1 then 'Male'

WHEN 0 then 'Female'

ELSE 'Unknow'

END

FROM Student;

Hoặc:

SELECT studentid, studentname, CASE gender

WHEN 1 then 'Male'

WHEN 0 then 'Female'

ELSE 'Unknow'

END AS GENDER

FROM Student;

Kết quả sẽ hiển thị như sau:

studentid studentname GENDER
1 A Male
2 B Female
3 C Unknow
4 A Female

Cú pháp 2

SELECT Các_cột, Bí_danh = CASE

WHEN Điều_kiện1 then Hiển_thị1

WHEN Điều_kiện2 then Hiển_thị2

...

ELSE Hiển_thị

END

FROM Các_bảng_liên_kết [WHERE Điều_kiện];

Hoặc:

SELECT Các_cột, CASE

WHEN Điều_kiện1 then Hiển_thị1

WHEN Điều_kiện2 then Hiển_thị2

...

ELSE Hiển_thị

END AS Bí_danh

FROM Các_bảng_liên_kết [WHERE Điều_kiện];

Ví dụ cho Cú pháp 2

Hiển thị tên khách hàng, tổng số tiền mua hàng của từng khách và hiển thị cột Level với giá trị điền vào cột này theo tiêu chí sau: Nếu tổng số tiền mua hàng của từng khách < 5000 thì điền giá trị là 'Level1', từ 5000 đến < 10000 thì điền giá trị là 'Level2', >=10000 thì điền giá trị là 'V.I.P' (Câu 14 bài tập Practical 4). Ta giải quyết yêu cầu này như sau:

SELECT c.Ten, SUM(b.SoLuongMua * a.DonGia) AS [TongTienMua], [Level] = CASE

WHEN SUM(b.SoLuongMua * a.DonGia) < 5000 THEN 'Level 1'

WHEN SUM(b.SoLuongMua * a.DonGia) >= 5000 AND SUM(b.SoLuongMua * a.DonGia) < 10000 THEN 'Level 2'

WHEN SUM(b.SoLuongMua * a.DonGia) >= 10000 THEN 'V.I.P'

ELSE 'Unknow'

END

FROM Item a JOIN CustomerItem b ON a.MaHang=b.Mahang JOIN Customer c ON b.MaKhach=c.MaKhach

GROUP BY c.Ten;

Hoặc:

SELECT c.Ten, SUM(b.SoLuongMua * a.DonGia) AS [TongTienMua], CASE

WHEN SUM(b.SoLuongMua * a.DonGia) < 5000 THEN 'Level 1'

WHEN SUM(b.SoLuongMua * a.DonGia) >= 5000 AND SUM(b.SoLuongMua * a.DonGia) < 10000 THEN 'Level 2'

WHEN SUM(b.SoLuongMua * a.DonGia) >= 10000 THEN 'V.I.P'

ELSE 'Unknow'

END AS [Level]

FROM Item a JOIN CustomerItem b ON a.MaHang=b.Mahang JOIN Customer c ON b.MaKhach=c.MaKhach

GROUP BY c.Ten;

» Tiếp: TOP « Trước: GROUP BY với HAVING Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên Khóa học qua video: Lập trình Python All Lập trình C# All SQL Server All Lập trình C All Java PHP HTML5-CSS3-JavaScript Đăng ký Hội viên Tất cả các video dành cho hội viên Copied !!! Copy linkCopied link!
Bạn muốn tìm kiếm điều gì?

Từ khóa » Các Câu Lệnh Rẽ Nhánh Trong Sql