Учебники

Teradata — CASE и COALESCE

В этой главе описываются функции CASE и COALESCE Teradata.

CASE Expression

Выражение CASE сравнивает каждую строку с условием или предложением WHEN и возвращает результат первого совпадения. Если совпадений нет, возвращается результат из ELSE.

Синтаксис

Ниже приводится синтаксис выражения CASE.

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

ELSE  
   Result-n 
END

пример

Рассмотрим следующую таблицу сотрудников.

Сотрудник № Имя Фамилия JoinedDate DepartmentNo Дата рождения
101 Майк Джеймс 3/27/2005 1 1/5/1980
102 Роберт Williams 4/25/2007 2 3/5/1983
103 Питер Павел 3/21/2007 2 4/1/1983
104 Alex Стюарт 2/1/2008 2 11/6/1984
105 Роберт Джеймс 1/4/2008 3 12/1/1984

В следующем примере оценивается столбец DepartmentNo и возвращается значение 1, если номер отдела равен 1; возвращает 2, если номер отдела равен 3; в противном случае он возвращает значение как неверный отдел.

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

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) 

пример

В следующем примере возвращается NULL, если значение DepartmentNo равно 3. В противном случае возвращается значение DepartmentNo.

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

Приведенный выше запрос возвращает следующие записи. Вы можете видеть, что у сотрудника 105 есть отдел №. как NULL.