17.05 - 例: 労働時間を調べるためのUnion演算の実行 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.05
Release Date
2021年1月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-175K-JPN
Language
日本語 (日本)

プロジェクトに携わっている従業員一人当たりの工数を求めると想定します。さらに、プロジェクトに携わっていない従業員の名前も結果に含めるとします。

そのためには、次の例のような合併の操作を実行しなければなりません。

   SELECT Name, Proj_Id, Hours 
   FROM Employee, Charges 
   WHERE Employee.EmpNo = Charges.EmpNo
   UNION
   SELECT Name, Null (CHAR(8)), Null (DECIMAL(4,2)), 
   FROM Employee 
   WHERE EmpNo NOT IN 
   (SELECT EmpNo 
   FROM Charges
   )
   UNION
   SELECT Null (VARCHAR(12)), Proj_Id, Hours 
   FROM Charges 
   WHERE EmpNo NOT IN 
   (SELECT EmpNo 
   FROM Employee
   );

文の最初の部分で、EmployeeテーブルとChargesテーブルをEmpNoの列で結合します。2番目の部分で、Employeeテーブルにリストされているが、Chargesテーブルにはリストされていない従業員を求めます。3番目の部分で、Chargesテーブルにはリストされているが、Employeeテーブルにはリストされていない従業員を求めます。これにより、要求された情報がすべて応答に含まれます。