16.20 - 例: 労働時間を調べるためのUnion演算の実行 - Teradata Database - Teradata Vantage NewSQL Engine

Teradata Vantage™ SQLデータ操作言語

Product
Teradata Database
Teradata Vantage NewSQL Engine
Release Number
16.20
Release Date
2019年3月
Content Type
プログラミング リファレンス
Publication ID
B035-1146-162K-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テーブルにはリストされていない従業員を求めます。これにより、要求された情報がすべて応答に含まれます。