Teradata – PŘÍPAD a SPLÝVAJÍ
Tato kapitola vysvětluje PŘÍPADĚ a SPLÝVAJÍ funkce Teradata.
CASE Expression
CASE expression vyhodnotí každý řádek proti podmínce nebo klauzuli WHEN a vrátí výsledek první shody. Pokud nejsou k dispozici žádné zápasy, výsledek z jiné části se vrátil.
syntaxe
následuje syntaxe výrazu CASE.
CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END
příklad
zvažte následující tabulku zaměstnanců.
EmployeeNo | Jméno | Příjmení | JoinedDate | DepartmentNo | Datum Narození |
---|---|---|---|---|---|
101 | Mike | James | 3/27/2005 | 1 | 1/5/1980 |
102 | Robert | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Peter | Paul | 3/21/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 |
následující příklad hodnotí DepartmentNo sloupec a vrátí hodnotu 1 v případě, že oddělení číslo je 1; vrátí 2, pokud odboru číslo je 3; jinak vrací hodnotu jako neplatné oddělení.
SELECT EmployeeNo, CASE DepartmentNo WHEN 1 THEN 'Admin' WHEN 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
po provedení výše uvedeného dotazu vytvoří následující výstup.
*** 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
výše uvedený výraz může být také zapsán v následující formě, která bude mít stejný výsledek jako výše.
SELECT EmployeeNo, CASE WHEN DepartmentNo = 1 THEN 'Admin' WHEN DepartmentNo = 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;
COALESCE
COALESCE je příkaz, který vrací první nenulovou hodnotu výrazu. Vrátí NULL, pokud všechny argumenty výrazu vyhodnotí na NULL. Následuje syntaxe.
syntaxe
COALESCE(expression 1, expression 2, ....)
příklad
SELECT EmployeeNo, COALESCE(dept_no, 'Department not found') FROM employee;
NULLIF
nullif příkaz vrací NULL, pokud jsou argumenty stejné.
syntaxe
následuje syntaxe příkazu NULLIF.
NULLIF(expression 1, expression 2)
příklad
následující příklad vrací NULL, pokud se oddělení rovná 3. V opačném případě vrátí Odděleníbez hodnoty.
SELECT EmployeeNo, NULLIF(DepartmentNo,3) AS department FROM Employee;
výše uvedený dotaz vrací následující záznamy. Můžete vidět, že zaměstnanec 105 má oddělení č. jako 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