Teradata教程

Teradata CASE和COALESCE

本章解释了 Teradata 的 CASE 和 COALESCE 函数。

CASE 表达式

CASE 表达式根据条件或 WHEN 子句计算每一行,并返回第一个匹配的结果。如果没有匹配项,则返回 ELSE 部分的结果。

语法

以下是 CASE 表达式的语法。
case <expression> 
WHEN <expression> THEN result-1 
WHEN <expression> THEN result-2 
else  
   Result-n 
END

示例

考虑以下员工表。
员工编号 名字 姓氏 加入日期 部门编号 出生日期
101 迈克 詹姆斯 2005/3/27 1 1/5/1980
102 罗伯特 威廉姆斯 4/25/2007 2 3/5/1983
103 彼得 保罗 3/21/2007 2 4/1/1983
104 亚历克斯 斯图尔特 2/1/2008 2 11/6/1984
105 罗伯特 詹姆斯 1/4/2008 3 12/1/1984
以下示例计算 DepartmentNo 列,如果部门编号为 1,则返回值 1;如果部门编号为 3,则返回 2;否则返回值作为无效部门。
SELECT 
   EmployeeNo, 
case DepartmentNo 
   WHEN 1 THEN 'Admin' 
   WHEN 2 THEN 'IT' 
else 'Invalid Dept'
   END AS Department 
FROM Employee; 
执行上述查询时,会产生以下输出。
*** 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
上面的 CASE 表达式也可以写成下面的形式,这将产生与上面相同的结果。
SELECT 
   EmployeeNo, 
case  
   WHEN DepartmentNo = 1 THEN 'Admin' 
   WHEN  DepartmentNo = 2 THEN 'IT' 
else 'Invalid Dept' 
   END AS Department  
FROM Employee;

合并

COALESCE 是返回表达式的第一个非空值的语句。如果表达式的所有参数的计算结果都为 NULL,则它返回 NULL。以下是语法。

语法

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

示例

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

NULLIF

NULLIF 语句在参数相等时返回 NULL。

语法

以下是 NULLIF 语句的语法。
NULLIF(expression 1, expression 2) 

示例

如果 DepartmentNo 等于 3,以下示例返回 NULL。否则,它返回 DepartmentNo 值。
SELECT 
   EmployeeNo,  
   nullIF(DepartmentNo,3) AS department 
FROM Employee;
上述查询返回以下记录。您可以看到员工 105 的部门编号。为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
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4