Repository navigation
Expand file tree
/
Copy path06_SETs.sql
More file actions
179 lines (165 loc) · 3.79 KB
/
Copy path06_SETs.sql
File metadata and controls
179 lines (165 loc) · 3.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
/* ==============================================================================
SQL SET Operations
---------------------------------------------------------------------------------
SQL set operations enable you to combine results from multiple queries
into a single result set. This script demonstrates the rules and usage of
set operations, including UNION, UNION ALL, EXCEPT, and INTERSECT.
Table of Contents:
1. RULES OF SET OPERATIONS
2. SET OPERATORS | UNION, UNION ALL, EXCEPT, INTERSECT
=================================================================================
*/
-- Run this line first: every query in this script uses SalesDB
USE SalesDB;
/* ==============================================================================
1. RULES OF SET OPERATIONS
============================================================================== */
/* RULE: Number of Columns
The number of columns in each query must be the same.
*/
SELECT
FirstName,
LastName,
Country
FROM Sales.Customers
UNION
SELECT
FirstName,
LastName
FROM Sales.Employees;
/* RULE: Data Types (Example)
The data types of columns in each query should match.
*/
SELECT
CustomerID,
LastName
FROM Sales.Customers
UNION
SELECT
FirstName,
LastName
FROM Sales.Employees;
/* RULE: Column Order
The order of the columns in each query must be the same.
*/
SELECT
LastName,
CustomerID
FROM Sales.Customers
UNION
SELECT
EmployeeID,
LastName
FROM Sales.Employees;
/* RULE: Column Aliases
The column names in the result set are determined by the column names
specified in the first SELECT statement.
*/
SELECT
CustomerID AS ID,
LastName AS Last_Name
FROM Sales.Customers
UNION
SELECT
EmployeeID,
LastName
FROM Sales.Employees;
/* RULE: Correct Columns
Ensure that the correct columns are used to maintain data consistency.
*/
SELECT
FirstName,
LastName
FROM Sales.Customers
UNION
SELECT
LastName,
FirstName
FROM Sales.Employees;
/* ==============================================================================
2. SET OPERATORS | UNION, UNION ALL, EXCEPT, INTERSECT
============================================================================== */
/* TASK 1:
Combine the data from Employees and Customers into one table using UNION
*/
SELECT
FirstName,
LastName
FROM Sales.Customers
UNION
SELECT
FirstName,
LastName
FROM Sales.Employees;
/* TASK 2:
Combine the data from Employees and Customers into one table,
including duplicates, using UNION ALL
*/
SELECT
FirstName,
LastName
FROM Sales.Customers
UNION ALL
SELECT
FirstName,
LastName
FROM Sales.Employees;
/* TASK 3:
Find employees who are NOT customers using EXCEPT
*/
SELECT
FirstName,
LastName
FROM Sales.Employees
EXCEPT
SELECT
FirstName,
LastName
FROM Sales.Customers;
/* TASK 4:
Find employees who are also customers using INTERSECT
*/
SELECT
FirstName,
LastName
FROM Sales.Employees
INTERSECT
SELECT
FirstName,
LastName
FROM Sales.Customers;
/* TASK 5:
Combine order data from Orders and OrdersArchive into one report without duplicates
*/
SELECT
'Orders' AS SourceTable,
OrderID,
ProductID,
CustomerID,
SalesPersonID,
OrderDate,
ShipDate,
OrderStatus,
ShipAddress,
BillAddress,
Quantity,
Sales,
CreationTime
FROM Sales.Orders
UNION
SELECT
'OrdersArchive' AS SourceTable,
OrderID,
ProductID,
CustomerID,
SalesPersonID,
OrderDate,
ShipDate,
OrderStatus,
ShipAddress,
BillAddress,
Quantity,
Sales,
CreationTime
FROM Sales.OrdersArchive
ORDER BY OrderID;