The SET operators in Teradata manipulate the result sets of two or more queries by combining the results of each individual query into a single result set.
Most common SET operators are as below-
Operator | Description |
UNION | Combines the result sets of two or more SELECT statement. Duplicate rows are eliminated. |
UNION ALL | Combines the result sets of two or more SELECT statement. Duplicate rows are not eliminated. |
INTERSECT | Select only those rows which appears in all the result sets generated by the individual SELECT statement. |
MINUS/EXCEPT | Returns only those rows from the first result sets but not in the second result set. |
Teradata SET operator Rules
- The numbers of column in the each SELECT statement should be same.
- The data type for each column should be matched or compatible.
- ORDER BY, if used, should be included only in the final SELECT statement.
- Aliasing, Title, Format should be used in the very first SELECT statement, others will be ignored.
Teradata UNION
A UNION operator combines the result sets of two or more SELECT statements together as a single result set. It will remove the duplicate rows.
Teradata UNION Example
Consider below two customer tables related to savings and current account customer.
Savings customer
cust_id | income | age | years_with_bank | nbr_children | gender | marital_status |
1363355 | 13087 | 22 | 1 | 0 | M | 2 |
1363329 | 0 | 6 | 0 | 0 | F | 1 |
1362672 | 16319 | 50 | 0 | 1 | F | 2 |
1362629 | 0 | 6 | 0 | 0 | M | 1 |
1362611 | 24115 | 48 | 8 | 1 | F | 2 |
Current account customer
cust_id | income | age | years_with_bank | nbr_children | gender | marital_status |
1363355 | 13087 | 22 | 1 | 0 | M | 2 |
1362629 | 0 | 6 | 0 | 0 | M | 1 |
1363056 | 2442 | 19 | 1 | 0 | F | 1 |
Now, using below query, we can all the savings and current account holder customer.
sel cust_id from teradatapoint.customer_current UNION sel cust_id from teradatapoint.customer_savings;
When executed, the above query produces below result. Note that only the unique cust_id has been returned.
cust_id ----------- 1362611 1362629 1362672 1363056 1363329 1363355
Teradata UNION ALL
This one is also work same as UNION except it will not eliminate the duplicate from the final result set.
Teradata UNION ALL Example
Return all the savings and current account holder customer id.
sel cust_id from teradatapoint.customer_current UNION ALL sel cust_id from teradatapoint.customer_savings;
When executed, the above query produces below result.
*** Query completed. 8 rows found. One column returned. *** Total elapsed time was 1 second. cust_id ----------- 1363355 1363355 1362629 1362672 1363056 1363329 1362629 1362611
Teradata INTERSECT
It returns only the rows which are common for all result sets returned by the individual SELECT statement.
Teradata INTERSECT Example
The following example returns only the customer id who has both the savings and current account in the bank.
sel cust_id from teradatapoint.customer_current INTERSECT sel cust_id from teradatapoint.customer_savings;
When executed, the above query produces below result.
Output of the above query is as below-
*** Query completed. 2 rows found. One column returned. *** Total elapsed time was 1 second. cust_id ----------- 1362629 1363355
Teradata MINUS/EXCEPT
The MINUS/EXCEPT operator returns only those rows which are present in the first result set but not in the second one.
Teradata MINUS/EXCEPT Example
The following example fetches the customer id who has only savings account but not current account.
sel cust_id from teradatapoint.customer_savings MINUS sel cust_id from teradatapoint.customer_current;
When executed, the above query produces below result.
Output of the above query is as follows-
*** Query completed. 3 rows found. One column returned. *** Total elapsed time was 1 second. cust_id ----------- 1362672 1363329 1362611