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