Teradata - CASE và COALESCE

Chương này giải thích các chức năng CASE và COALESCE của Teradata.

Biểu thức CASE

Biểu thức CASE đánh giá mỗi hàng theo một điều kiện hoặc mệnh đề WHEN và trả về kết quả của trận đấu đầu tiên. Nếu không có kết quả phù hợp nào thì kết quả từ phần ELSE của được trả về.

Cú pháp

Sau đây là cú pháp của biểu thức CASE.

CASE <expression> 
WHEN <expression> THEN result-1 
WHEN <expression> THEN result-2 

ELSE  
   Result-n 
END

Thí dụ

Hãy xem xét bảng Nhân viên sau đây.

Nhân viên Không Tên đầu tiên LastName Ngày tham gia Bộ phận Không Ngày sinh
101 Mike James 27/3/2005 1 1/5/1980
102 Robert Williams 25/4/2007 2 3/5/1983
103 Peter Paul 21/3/2007 2 4/1/1983
104 Alex Stuart 2/1/2008 2 11/6/1984
105 Robert James 1/4/2008 3 12/1/1984

Ví dụ sau đây đánh giá cột Phòng ban và trả về giá trị 1 nếu số phòng ban là 1; trả về 2 nếu số bộ phận là 3; nếu không nó trả về giá trị là bộ phận không hợp lệ.

SELECT 
   EmployeeNo, 
CASE DepartmentNo 
   WHEN 1 THEN 'Admin' 
   WHEN 2 THEN 'IT' 
ELSE 'Invalid Dept'
   END AS Department 
FROM Employee;

Khi truy vấn trên được thực thi, nó tạo ra kết quả sau.

*** Query completed. 5 rows found. 2 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo    Department 
-----------   ------------ 
   101         Admin 
   104         IT 
   102         IT 
   105         Invalid Dept 
   103         IT

Biểu thức CASE ở trên cũng có thể được viết ở dạng sau sẽ cho kết quả tương tự như trên.

SELECT 
   EmployeeNo, 
CASE  
   WHEN DepartmentNo = 1 THEN 'Admin' 
   WHEN  DepartmentNo = 2 THEN 'IT' 
ELSE 'Invalid Dept' 
   END AS Department  
FROM Employee;

THAN

COALESCE là một câu lệnh trả về giá trị khác rỗng đầu tiên của biểu thức. Nó trả về NULL nếu tất cả các đối số của biểu thức được đánh giá là NULL. Sau đây là cú pháp.

Cú pháp

COALESCE(expression 1, expression 2, ....)

Thí dụ

SELECT 
   EmployeeNo, 
   COALESCE(dept_no, 'Department not found') 
FROM  
   employee;

NULLIF

Câu lệnh NULLIF trả về NULL nếu các đối số bằng nhau.

Cú pháp

Sau đây là cú pháp của câu lệnh NULLIF.

NULLIF(expression 1, expression 2)

Thí dụ

Ví dụ sau đây trả về giá trị NULL nếu DepartmentNo bằng 3. Ngược lại, nó trả về giá trị DepartmentNo.

SELECT 
   EmployeeNo,  
   NULLIF(DepartmentNo,3) AS department 
FROM Employee;

Truy vấn trên trả về các bản ghi sau. Bạn có thể thấy rằng nhân viên 105 không có phòng ban. dưới dạng NULL.

*** Query completed. 5 rows found. 2 columns returned. 
*** Total elapsed time was 1 second. 
 EmployeeNo      department 
-----------  ------------------ 
    101              1 
    104              2 
    102              2 
    105              ? 
    103              2