Teradata-CASE och COALESCE

annonser

detta kapitel förklarar Teradatas fall och sammanför funktioner.

FALLUTTRYCK

FALLUTTRYCK utvärderar varje rad mot ett villkor eller när-klausul och returnerar resultatet av den första matchen. Om det inte finns några matchningar returneras resultatet från annan del av.

Syntax

Följande är syntaxen för FALLUTTRYCKET.

CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END

exempel

Tänk på följande anställd tabell.

Anställdeno Förnamn Efternamn Förenaddatum Avdelningno Födelsedatum
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

följande exempel utvärderar kolumnen Institutionno och returnerar värdet 1 om avdelningsnumret är 1; returnerar 2 om avdelningsnumret är 3; annars returnerar värdet som ogiltig avdelning.

SELECT EmployeeNo, CASE DepartmentNo WHEN 1 THEN 'Admin' WHEN 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee; 

när ovanstående fråga körs producerar den följande utdata.

*** 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

ovanstående FALLUTTRYCK kan också skrivas i följande form som ger samma resultat som ovan.

SELECT EmployeeNo, CASE WHEN DepartmentNo = 1 THEN 'Admin' WHEN DepartmentNo = 2 THEN 'IT' ELSE 'Invalid Dept' END AS Department FROM Employee;

COALESCE

COALESCE är ett uttalande som returnerar det första icke-null-värdet av uttrycket. Den returnerar NULL om alla argument i uttrycket utvärderas till NULL. Följande är syntaxen.

Syntax

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

exempel

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

nullif

nullif uttalande returnerar NULL om argumenten är lika.

Syntax

följande är syntaxen för nullif-uttalandet.

NULLIF(expression 1, expression 2) 

exempel

följande exempel returnerar NULL om Avdelningenno är lika med 3. Annars returnerar den Avdelningeninget värde.

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

ovanstående fråga returnerar följande poster. Du kan se att anställd 105 har avdelning nr. som 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
annonser

Lämna ett svar

Din e-postadress kommer inte publiceras.