Teradata-case-and-coalesce
提供:Dev Guides
Teradata-ケースとコアレス
この章では、TeradataのCASEおよびCOALESCE機能について説明します。
ケース式
CASE式は、各行を条件またはWHEN句に対して評価し、最初の一致の結果を返します。 一致するものがない場合、ELSE部分の結果が返されます。
構文
CASE式の構文は次のとおりです。
CASE <expression>
WHEN <expression> THEN result-1
WHEN <expression> THEN result-2
ELSE
Result-n
END
例
次のEmployeeテーブルを検討してください。
EmployeeNo | FirstName | LastName | JoinedDate | DepartmentNo | BirthDate |
---|---|---|---|---|---|
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 |
次の例では、DepartmentNo列を評価し、部門番号が1の場合に値1を返します。部門番号が3の場合、2を返します。それ以外の場合は、無効な部門として値を返します。
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は、式の最初の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