Teradata – PŘÍPAD a SPLÝVAJÍ

Reklamy

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
inzeráty

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.