Teradata-CASE and COALESCE
広告
この章では、Teradataのケースと合体機能について説明します。
CASE Expression
CASE expressionは、条件またはWHEN句に対して各行を評価し、最初の一致の結果を返します。 一致するものがない場合は、ELSE部分の結果が返されます。
構文
以下はCASE式の構文です。
CASE <expression> WHEN <expression> THEN result-1 WHEN <expression> THEN result-2 ELSE Result-n END
例
次のEmployeeテーブルを考えてみましょう。
従業員 | 姓 | 姓 | JoinedDate | DepartmentNo | 生年月日 |
---|---|---|---|---|---|
101 | マイク | ジェームズ | 3/27/2005 | 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を返し、それ以外の場合は値をinvalid departmentとして返します。
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と評価された場合、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