Örnekler (Transact-SQL) seçin

Bu konuda kullanma örnekleri sağlar seçin deyim.

A.Satır ve sütun almak için select kullanma

Aşağıdaki örnek, üç kod örnekleri gösterir.Bu ilk kod örneği (hiçbir where yan tümce belirtilen) tüm satırları ve tüm sütunlar döndürür (kullanarak *) dan Product tablo AdventureWorks2008R2 veritabanı.

USE AdventureWorks2008R2;
GO
SELECT *
FROM Production.Product
ORDER BY Name ASC;
-- Alternate way.
USE AdventureWorks2008R2;
GO
SELECT p.*
FROM Production.Product AS p
ORDER BY Name ASC;
GO

Bu örnek (hiçbir where yan tümce belirtilen) tüm satırların ve sütunların yalnızca alt küme döndürür (Name, ProductNumber, ListPrice) dan Product tablo AdventureWorks2008R2 veritabanı.Ayrıca, bir sütun başlığını eklenir.

USE AdventureWorks2008R2;
GO
SELECT Name, ProductNumber, ListPrice AS Price
FROM Production.Product 
ORDER BY Name ASC;
GO

Bu örnek için yalnızca satırları döndürür Product bir ürün satırı sahip R yani üretmek için gün ve daha az 4.

USE AdventureWorks2008R2;
GO
SELECT Name, ProductNumber, ListPrice AS Price
FROM Production.Product 
WHERE ProductLine = 'R' 
AND DaysToManufacture < 4
ORDER BY Name ASC;
GO

B.select kullanarak sütun başlıkları ve hesaplamalar

Aşağıdaki örnekler,'den tüm satırlar dönmek Product tablo.İlk örnek, toplam satış ve her ürün iskontolarını döndürür.İkinci örnekte, her ürün için toplam geliri hesaplanır.

USE AdventureWorks2008R2;
GO
SELECT p.Name AS ProductName, 
NonDiscountSales = (OrderQty * UnitPrice),
Discounts = ((OrderQty * UnitPrice) * UnitPriceDiscount)
FROM Production.Product AS p 
INNER JOIN Sales.SalesOrderDetail AS sod
ON p.ProductID = sod.ProductID 
ORDER BY ProductName DESC;
GO

Her ürünün her satış siparişi geliri hesaplar sorgudur.

USE AdventureWorks2008R2;
GO
SELECT 'Total income is', ((OrderQty * UnitPrice) * (1.0 - UnitPriceDiscount)), ' for ',
p.Name AS ProductName 
FROM Production.Product AS p 
INNER JOIN Sales.SalesOrderDetail AS sod
ON p.ProductID = sod.ProductID 
ORDER BY ProductName ASC;
GO

C.İle select DISTINCT kullanma

Aşağıdaki örnek DISTINCT alınmasını önlemek içinyinelenen başlıklarını.

USE AdventureWorks2008R2;
GO
SELECT DISTINCT JobTitle
FROM HumanResources.Employee
ORDER BY JobTitle;
GO

D.select INTO ile tablolar oluşturma

Aşağıdaki ilk örnek adlı geçici bir tablo oluşturur #Bicycles , tempdb.

USE tempdb;
GO
IF OBJECT_ID (N'#Bicycles',N'U') IS NOT NULL
DROP TABLE #Bicycles;
GO
SELECT * 
INTO #Bicycles
FROM AdventureWorks2008R2.Production.Product
WHERE ProductNumber LIKE 'BK%';
GO

Bu ikinci örnek kalıcı bir tablooluştururNewProducts.

USE AdventureWorks2008R2;
GO
IF OBJECT_ID ('dbo.NewProducts', 'U') IS NOT NULL
    DROP TABLE dbo.NewProducts;
GO
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY BULK_LOGGED;
GO

SELECT * INTO dbo.NewProducts
FROM Production.Product
WHERE ListPrice > $25 
AND ListPrice < $100;
GO
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY FULL;
GO

E.İlişkili alt sorgular kullanma

Aşağıdaki örnek gönderilmesinin eşdeğerdir sorguları gösterir ve kullanma arasındaki fark gösterilmektedir EXISTS anahtar sözcüğünü ve IN anahtar sözcüğü.Her ikisi de tek bir örnek ürün modeli uzun kabında logo jersey olduğu her ürün adının alır geçerli bir alt sorgu örnekler ve ProductModelID numaraları eşleşen arasında Product ve ProductModel tablolar.

USE AdventureWorks2008R2;
GO
SELECT DISTINCT Name
FROM Production.Product AS p 
WHERE EXISTS
    (SELECT *
     FROM Production.ProductModel AS pm 
     WHERE p.ProductModelID = pm.ProductModelID
           AND pm.Name LIKE 'Long-Sleeve Logo Jersey%');
GO

-- OR

USE AdventureWorks2008R2;
GO
SELECT DISTINCT Name
FROM Production.Product
WHERE ProductModelID IN
    (SELECT ProductModelID 
     FROM Production.ProductModel
     WHERE Name LIKE 'Long-Sleeve Logo Jersey%');
GO

Aşağıdaki örnek IN ilişkili veya yinelenen, bir alt sorguiçinde.Bu dış sorgu değerleri için bağımlı bir sorgudur.Sorguyu tekrar tekrar yürütülen dış sorgu tarafından seçilen her satır için bir saat .Her bir çalışana ilk ve son adı'nın bir örnek bu sorgunun aldığı ödül de SalesPerson tablo 5000.00 ve içinde çalışan kimlik numaraları aynı olduğu için Employee ve SalesPerson tablolar.

USE AdventureWorks2008R2;
GO
SELECT DISTINCT p.LastName, p.FirstName 
FROM Person.Person AS p 
JOIN HumanResources.Employee AS e
    ON e.BusinessEntityID = p.BusinessEntityID WHERE 5000.00 IN
    (SELECT Bonus
     FROM Sales.SalesPerson AS sp
     WHERE e.BusinessEntityID = sp.BusinessEntityID);
GO

Bu deyim önceki alt sorgu dış sorgu bağımsız olarak değerlendirilemez.Bir değer için gerekli Employee.BusinessEntityID, ancak bu değer olarak değiştirir SQL Server Veritabanı Altyapısı farklı satırlarda inceler Employee.

bağıntılı alt sorgu da kullanılabilir HAVINGyan tümce dış bir sorgu. Bu örnek, ortalama katından fazla modeli için en yüksek fiyat listesi olduğu ürün modelleri bulur.

USE AdventureWorks2008R2;
GO
SELECT p1.ProductModelID
FROM Production.Product AS p1
GROUP BY p1.ProductModelID
HAVING MAX(p1.ListPrice) >= ALL
    (SELECT AVG(p2.ListPrice)
     FROM Production.Product AS p2
     WHERE p1.ProductModelID = p2.ProductModelID);
GO

Bu örnek, belirli bir ürünün satan çalışanların adlarını bulmak için iki ilişkili alt sorgular kullanır.

USE AdventureWorks2008R2;
GO
SELECT DISTINCT pp.LastName, pp.FirstName 
FROM Person.Person pp JOIN HumanResources.Employee e
ON e.BusinessEntityID = pp.BusinessEntityID WHERE pp.BusinessEntityID IN 
(SELECT SalesPersonID 
FROM Sales.SalesOrderHeader
WHERE SalesOrderID IN 
(SELECT SalesOrderID 
FROM Sales.SalesOrderDetail
WHERE ProductID IN 
(SELECT ProductID 
FROM Production.Product p 
WHERE ProductNumber = 'BK-M68B-42')));
GO

F.Grup by kullanma

Aşağıdaki örnek, her bir satış siparişinin toplam veritabanında bulur.

USE AdventureWorks2008R2;
GO
SELECT SalesOrderID, SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID
ORDER BY SalesOrderID;
GO

Nedeniyle GROUP BY yan tümce, tüm satışların toplamını içeren tek bir satır her satış siparişi için döndürülür.

G.group by ile birden çok grupları kullanma

Aşağıdaki örnek, ortalama fiyatı ve yıl toplamı bulur-için-tarih satış, ürün Koduna göre gruplandırılmış ve özel teklif kimliği.

USE AdventureWorks2008R2;
GO
SELECT ProductID, SpecialOfferID, AVG(UnitPrice) AS 'Average Price', 
    SUM(LineTotal) AS SubTotal
FROM Sales.SalesOrderDetail
GROUP BY ProductID, SpecialOfferID
ORDER BY ProductID;
GO

H.Grup tarafından ve nerede kullanma

Aşağıdaki örnek, yalnızca büyük liste fiyatlarla satırları aldıktan sonra gruplar halinde sonuçlar koyar $1000.

USE AdventureWorks2008R2;
GO
SELECT ProductModelID, AVG(ListPrice) AS 'Average List Price'
FROM Production.Product
WHERE ListPrice > $1000
GROUP BY ProductModelID
ORDER BY ProductModelID;
GO

Ö.group by ile bir ifadekullanma

Aşağıdaki örnek gruplarınca bir ifade.toplu işlevleri ifade içermiyorsa bir ifade gruplandırabilirsiniz.

USE AdventureWorks2008R2;
GO
SELECT AVG(OrderQty) AS 'Average Quantity', 
NonDiscountSales = (OrderQty * UnitPrice)
FROM Sales.SalesOrderDetail
GROUP BY (OrderQty * UnitPrice)
ORDER BY (OrderQty * UnitPrice) DESC;
GO

J.Grup by ile sipariş by kullanma

Aşağıdaki örnek, her ürün türü ortalama fiyatını bulur ve sonuçlar ortalama fiyatı ile siparişleri.

USE AdventureWorks2008R2;
GO
SELECT ProductID, AVG(UnitPrice) AS 'Average Price'
FROM Sales.SalesOrderDetail
WHERE OrderQty > 10
GROUP BY ProductID
ORDER BY AVG(UnitPrice);
GO

K.HAVING yan tümcekullanarak

Gösterileri izleyen ilk örnek bir bir topluişlevHAVINGyan tümce . Satır grupları SalesOrderDetail tablo ürün kimliği ve, ortalama sipariş miktarları beş veya daha az ürünlerinin ortadan kaldırır.İkinci örnekte gösterildiği bir toplu işlevleri olmadanHAVINGyan tümce .

USE AdventureWorks2008R2;
GO
SELECT ProductID 
FROM Sales.SalesOrderDetail
GROUP BY ProductID
HAVING AVG(OrderQty) > 5
ORDER BY ProductID;
GO

Bu sorguyu kullanır LIKE yan tümce tümcesinde HAVING yan tümce.

USE AdventureWorks2008R2 ;
GO
SELECT SalesOrderID, CarrierTrackingNumber 
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID, CarrierTrackingNumber
HAVING CarrierTrackingNumber LIKE '4BD%'
ORDER BY SalesOrderID ;
GO

L.HAVING ve Grup by kullanma

Aşağıdaki örnekler kullanarak GROUP BY, HAVING, WHERE, ve ORDER BY bir yan SELECT deyim.Bu gruplar üretir ve Özet değerleri ancak ürünlerin fiyatları üzerinde $25 ortadan sonra bunu yapar ve ortalama Sipariş miktarlarını altında 5.Ayrıca sonuçlar düzenler ProductID.

USE AdventureWorks2008R2;
GO
SELECT ProductID 
FROM Sales.SalesOrderDetail
WHERE UnitPrice < 25.00
GROUP BY ProductID
HAVING AVG(OrderQty) > 5
ORDER BY ProductID;
GO

M.HAVING Topla ve avg ile kullanma

Aşağıdaki örnek grupları SalesOrderDetail tablo ürün kimliği tarafından ve yalnızca grupların toplam alma siparişlerinin ürünleri içerir birden fazla $1000000.00 ve, ortalama sipariş miktarları az 3.

USE AdventureWorks2008R2;
GO
SELECT ProductID, AVG(OrderQty) AS AverageQuantity, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
GROUP BY ProductID
HAVING SUM(LineTotal) > $1000000.00
AND AVG(OrderQty) < 3;
GO

Toplam satışların büyük olan ürünleri görmek için $2000000.00, bu sorguyu kullanın:

USE AdventureWorks2008R2;
GO
SELECT ProductID, Total = SUM(LineTotal)
FROM Sales.SalesOrderDetail
GROUP BY ProductID
HAVING SUM(LineTotal) > $2000000.00;
GO

Emin olmak istiyorsanız, en az bin beş yüz öğeler vardır her ürün için hesaplamalara dahil, kullanın HAVING COUNT(*) > 1500 daha az toplamları dönmek ürünleri ortadan kaldırmak için 1500 satılan maddelerin.Sorguyu aşağıdaki gibi görünür:

USE AdventureWorks2008R2;
GO
SELECT ProductID, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
GROUP BY ProductID
HAVING COUNT(*) > 1500;
GO

K.compute by kullanarak Grup toplamlarını hesaplama

Aşağıdaki örnek, compute by kullanımını göstermek için iki kod örnekleri kullanır.İlk kod örneği kullanır COMPUTE BY ile bir toplu işlevve ikinci kod örneği kullanır bir COMPUTE BY öğe ve iki toplu işlevleri.

Bu sorgu ürünleri fiyatları ile siparişlerin toplamını hesaplar daha az $5.00, her tür ürün.

USE AdventureWorks2008R2;
GO
SELECT ProductID, LineTotal
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $5.00
ORDER BY ProductID, LineTotal
COMPUTE SUM(LineTotal) BY ProductID;
GO

Bu sorgu, ürün türünü ve birim fiyatları altında ürünler için toplam sipariş alır $5.00.COMPUTE BYyan tümce iki farklı toplu işlevlerini kullanır.

USE AdventureWorks2008R2;
GO
SELECT ProductID, LineTotal
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $5.00
ORDER BY ProductID, LineTotal
COMPUTE SUM(LineTotal), MAX(LineTotal) BY ProductID;
GO

Ocompute by olmadan kullanarak genel değer hesaplama

compute anahtar sözcüğü by genel toplamlar, genel sayar ve benzeri üretmek için kullanılabilir.

Aşağıdaki örnek ürünler les ' tüm türleri için genel toplam fiyatları ve geliştirmeleri bulur $2.00.

USE AdventureWorks2008R2;
GO
SELECT ProductID, OrderQty, UnitPrice, LineTotal
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $2.00
COMPUTE SUM(OrderQty), SUM(LineTotal);
GO

compute by kullanabilir ve aynı sorgu içinde by compute.Aşağıdaki sorgu sipariş miktarları ve ürün türüne göre satır toplamlarının toplamına bulur ve sonra sipariş miktarları genel toplamı ve satır toplamları hesaplar.

USE AdventureWorks2008R2;
GO
SELECT ProductID, OrderQty, UnitPrice, LineTotal
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $5.00
ORDER BY ProductID
COMPUTE SUM(OrderQty), SUM(LineTotal) BY ProductID
COMPUTE SUM(OrderQty), SUM(LineTotal);
GO

P.Tüm satırlardaki toplamlarını hesaplama hesaplanan

Aşağıdaki örnek, seçim listesinde yalnızca üç sütun gösterir ve tüm sipariş miktarları ve sonuçlar, sonunda tüm satır toplamları toplamları verir.

USE AdventureWorks2008R2;
GO
SELECT ProductID, OrderQty, LineTotal
FROM Sales.SalesOrderDetail
COMPUTE SUM(OrderQty), SUM(LineTotal);
GO

Q.Birden fazla compute yan tümcekullanarak

Aşağıdaki örnek, birim fiyatı 5'ten az $ $5'ten daha az düzenlenen tüm siparişlerin ürün Koduna göre fiyatları toplamı yanı sıra ürün kimliği ve sipariş miktarı tarafından düzenlenmiş olan tüm siparişlerin fiyatları toplamı bulur.Birden fazla compute by yan tümceekleyerek aynı deyim içinde farklı toplu işlevlerini kullanabilirsiniz.

USE AdventureWorks2008R2;
GO
SELECT ProductID, OrderQty, UnitPrice, LineTotal
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $5.00
ORDER BY ProductID, OrderQty, LineTotal
COMPUTE SUM(LineTotal) BY ProductID, OrderQty
COMPUTE SUM(LineTotal) BY ProductID;
GO

RGrup by compute ile karşılaştırma

Kullandığı izleyen ilk örnek COMPUTEtoplamı tüm siparişleri, ürünün birim fiyatı hesaplamak içinyan tümce ise daha az $5.00, ürün. türüne göreİkinci örnek aynı Özet bilgileri yalnızca kullanarak üretir GROUP BY.

USE AdventureWorks2008R2;
GO
SELECT ProductID, LineTotal
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $5.00
ORDER BY ProductID
COMPUTE SUM(LineTotal) BY ProductID;
GO

Bu kullanan ikinci sorgu, GROUP BY.

USE AdventureWorks2008R2;
GO
SELECT ProductID, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $5.00
GROUP BY ProductID
ORDER BY ProductID;
GO

S.select group by compute ve order by yan tümcesi ile kullanma

Aşağıdaki örnek, yalnızca birim fiyatı 5 $'dan ve ürün ve genel toplam satırı toplam hesaplar siparişleri verir.Tüm sütunları seçim listesi içinde görünür hesaplanan.

USE AdventureWorks2008R2;
GO
SELECT ProductID, OrderQty, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $5.00
GROUP BY ProductID, OrderQty
ORDER BY ProductID, OrderQty
COMPUTE SUM(SUM(LineTotal)) BY ProductID, OrderQty
COMPUTE SUM(SUM(LineTotal));
GO

T.Dizin iyileştirici ipucu kullanma

Aşağıdaki örnek kullanmanın iki yolu gösterir INDEX iyileştirici ipucu.İkinci örnek, dizin 0'ı kullanarak bir tablo taraması zorlar ve ilk örnek bir tablosatır almak için bir kümelenmemiş dizin kullanmak için en iyi duruma getiricisi zorlamak nasıl gösterir.

USE AdventureWorks2008R2;
GO
SELECT pp.FirstName, pp.LastName, e.NationalIDNumber
FROM HumanResources.Employee AS e WITH (INDEX(AK_Employee_NationalIDNumber))
JOIN Person.Person AS pp on e.BusinessEntityID = pp.BusinessEntityID
WHERE LastName = 'Johnson';
GO

-- Force a table scan by using INDEX = 0.
USE AdventureWorks2008R2;
GO
SELECT pp.LastName, pp.FirstName, e.JobTitle
FROM HumanResources.Employee AS e WITH (INDEX = 0) JOIN Person.Person AS pp
ON e.BusinessEntityID = pp.BusinessEntityID
WHERE LastName = 'Johnson';
GO

U'YASEÇENEK ve Grup ipuçlarını kullanarak

Aşağıdaki örnekte gösterildiği nasıl OPTION (GROUP) yan tümce ile kullanılan bir GROUP BY yan tümce.

USE AdventureWorks2008R2;
GO
SELECT ProductID, OrderQty, SUM(LineTotal) AS Total
FROM Sales.SalesOrderDetail
WHERE UnitPrice < $5.00
GROUP BY ProductID, OrderQty
ORDER BY ProductID, OrderQty
OPTION (HASH GROUP, FAST 10);
GO

V.Birleşim sorgusu ipucu kullanma

Aşağıdaki örnek MERGE UNION sorgu ipucu.

USE AdventureWorks2008R2;
GO
SELECT *
FROM HumanResources.Employee AS e1
UNION
SELECT *
FROM HumanResources.Employee AS e2
OPTION (MERGE UNION);
GO

B.Basit bir UNION kullanma

Aşağıdaki örnekte, sonuç kümesi içeriğini içerir ProductModelID ve Name sütunlar her ikisinin de ProductModel ve Gloves tablolar.

USE AdventureWorks2008R2;
GO
IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL
DROP TABLE dbo.Gloves;
GO
-- Create Gloves table.
SELECT ProductModelID, Name
INTO dbo.Gloves
FROM Production.ProductModel
WHERE ProductModelID IN (3, 4);
GO

-- Here is the simple union.
USE AdventureWorks2008R2;
GO
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID NOT IN (3, 4)
UNION
SELECT ProductModelID, Name
FROM dbo.Gloves
ORDER BY Name;
GO

X.select INTO UNION ile kullanma

Aşağıdaki örnekte, INTO yan tümce tümcesinde ikinci SELECT deyim belirtir tablo adlı ProductResults Son sonuç kümesi , belirlenmiş sütunları Birliği tutan ProductModel ve Gloves tablolar.Unutmayın Glovesilktablo oluşturulan SELECTdeyim.

USE AdventureWorks2008R2;
GO
IF OBJECT_ID ('dbo.ProductResults', 'U') IS NOT NULL
DROP TABLE dbo.ProductResults;
GO
IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL
DROP TABLE dbo.Gloves;
GO
-- Create Gloves table.
SELECT ProductModelID, Name
INTO dbo.Gloves
FROM Production.ProductModel
WHERE ProductModelID IN (3, 4);
GO

USE AdventureWorks2008R2;
GO
SELECT ProductModelID, Name
INTO dbo.ProductResults
FROM Production.ProductModel
WHERE ProductModelID NOT IN (3, 4)
UNION
SELECT ProductModelID, Name
FROM dbo.Gloves;
GO

SELECT * 
FROM dbo.ProductResults;

Y.order by ile iki select deyimleri UNION kullanma

Sırası ile birleşim yan tümce kullanılan belirli parametreler büyük/küçük harf önemlidir.Aşağıdaki örnek, yanlış ve doğru kullanımını gösterir UNION iki SELECT ifadeleri, bir sütun için iş yeniden adlandırılmasını çıktı.

USE AdventureWorks2008R2;
GO
IF OBJECT_ID ('dbo.Gloves', 'U') IS NOT NULL
DROP TABLE dbo.Gloves;
GO
-- Create Gloves table.
SELECT ProductModelID, Name
INTO dbo.Gloves
FROM Production.ProductModel
WHERE ProductModelID IN (3, 4);
GO

/* INCORRECT */
USE AdventureWorks2008R2;
GO
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID NOT IN (3, 4)
ORDER BY Name
UNION
SELECT ProductModelID, Name
FROM dbo.Gloves;
GO

/* CORRECT */
USE AdventureWorks2008R2;
GO
SELECT ProductModelID, Name
FROM Production.ProductModel
WHERE ProductModelID NOT IN (3, 4)
UNION
SELECT ProductModelID, Name
FROM dbo.Gloves
ORDER BY Name;
GO

Z.TÜM etkilerini ve parantez göstermek için üç select deyimleri UNION kullanma

Aşağıdaki örnekler UNION üç tablo tüm olduğundan aynı 5 satır veri sonuçlar birleştirmek içinİlk örnek UNION ALL Çoğaltılmış göstermek için kaydeden ve tüm 15 satır var. verirİkinci örnek kullanır UNION olmadan ALL üç birleştirilmiş sonuçlar arasında yinelenen satırları ortadan kaldırmak için SELECT , ifadeler ve döndürür 5 satır.

Üçüncü örnek kullanır ALL ile ilk UNION ve parantez içine ikinci UNION değil kullanıyor ALL.İkinci UNION parantez içinde olduğu ve 5, çünkü satırları döndürür çünkü ilk önce işleneceği ALL seçeneği kullanılamıyor ve eyaletler kaldırıldı.Bu 5 satır sonuçlar ilk birleştirilir SELECT kullanarak UNION ALL anahtar sözcükler.Bu iki 5 satır kümesi arasındaki çoğaltmaları kaldırmaz.Nihai sonucu 10 satır vardır.

USE AdventureWorks2008R2;
GO
IF OBJECT_ID ('dbo.EmployeeOne', 'U') IS NOT NULL
DROP TABLE dbo.EmployeeOne;
GO
IF OBJECT_ID ('dbo.EmployeeTwo', 'U') IS NOT NULL
DROP TABLE dbo.EmployeeTwo;
GO
IF OBJECT_ID ('dbo.EmployeeThree', 'U') IS NOT NULL
DROP TABLE dbo.EmployeeThree;
GO

SELECT pp.LastName, pp.FirstName, e.JobTitle 
INTO dbo.EmployeeOne
FROM Person.Person AS pp JOIN HumanResources.Employee AS e
ON e.BusinessEntityID = pp.BusinessEntityID
WHERE LastName = 'Johnson';
GO
SELECT pp.LastName, pp.FirstName, e.JobTitle 
INTO dbo.EmployeeTwo
FROM Person.Person AS pp JOIN HumanResources.Employee AS e
ON e.BusinessEntityID = pp.BusinessEntityID
WHERE LastName = 'Johnson';
GO
SELECT pp.LastName, pp.FirstName, e.JobTitle 
INTO dbo.EmployeeThree
FROM Person.Person AS pp JOIN HumanResources.Employee AS e
ON e.BusinessEntityID = pp.BusinessEntityID
WHERE LastName = 'Johnson';
GO
-- Union ALL
SELECT LastName, FirstName, JobTitle
FROM dbo.EmployeeOne
UNION ALL
SELECT LastName, FirstName ,JobTitle
FROM dbo.EmployeeTwo
UNION ALL
SELECT LastName, FirstName,JobTitle 
FROM dbo.EmployeeThree;
GO

SELECT LastName, FirstName,JobTitle
FROM dbo.EmployeeOne
UNION 
SELECT LastName, FirstName, JobTitle 
FROM dbo.EmployeeTwo
UNION 
SELECT LastName, FirstName, JobTitle 
FROM dbo.EmployeeThree;
GO

SELECT LastName, FirstName,JobTitle 
FROM dbo.EmployeeOne
UNION ALL
(
SELECT LastName, FirstName, JobTitle 
FROM dbo.EmployeeTwo
UNION
SELECT LastName, FirstName, JobTitle 
FROM dbo.EmployeeThree
);
GO