Teradata - SET Operatörleri
SET operatörleri, birden çok SELECT ifadesinden gelen sonuçları birleştirir. Bu, Joins'e benzer görünebilir, ancak birleşimler birden çok tablodan sütunları birleştirirken, SET operatörleri birden çok satırdaki satırları birleştirir.
Kurallar
Her bir SELECT ifadesindeki sütun sayısı aynı olmalıdır.
Her SELECT'ten gelen veri türleri uyumlu olmalıdır.
ORDER BY yalnızca son SELECT deyimine dahil edilmelidir.
BİRLİK
UNION deyimi, birden çok SELECT deyiminden gelen sonuçları birleştirmek için kullanılır. Yinelemeleri yok sayar.
Sözdizimi
UNION bildiriminin temel sözdizimi aşağıdadır.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
UNION
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Misal
Aşağıdaki çalışan tablosu ve maaş tablosunu düşünün.
Çalışan Hayır | İsim | Soyadı | JoinedDate | Bölüm No | Doğum günü |
---|---|---|---|---|---|
101 | Mike | James | 27.3.2005 | 1 | 1/5/1980 |
102 | Robert | Williams | 25.4.2007 | 2 | 3/5/1983 |
103 | Peter | Paul | 21.3.2007 | 2 | 4/1/1983 |
104 | Alex | Stuart | 2/1/2008 | 2 | 11/6/1984 |
105 | Robert | James | 1/4/2008 | 3 | 12/1/1984 |
Çalışan Hayır | Brüt | Kesinti | Net ödeme |
---|---|---|---|
101 | 40.000 | 4.000 | 36.000 |
102 | 80.000 | 6.000 | 74.000 |
103 | 90.000 | 7.000 | 83.000 |
104 | 75.000 | 5.000 | 70.000 |
Aşağıdaki UNION sorgusu, Employee ve Maaş tablosundaki EmployeeNo değerini birleştirir.
SELECT EmployeeNo
FROM
Employee
UNION
SELECT EmployeeNo
FROM
Salary;
Sorgu yürütüldüğünde aşağıdaki çıktıyı üretir.
EmployeeNo
-----------
101
102
103
104
105
BİRLİĞİ TÜMÜ
UNION ALL ifadesi UNION'a benzer, yinelenen satırlar dahil olmak üzere birden çok tablodan sonuçları birleştirir.
Sözdizimi
UNION ALL ifadesinin temel sözdizimi aşağıdadır.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
UNION ALL
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Misal
Aşağıda UNION ALL bildirisine bir örnek verilmiştir.
SELECT EmployeeNo
FROM
Employee
UNION ALL
SELECT EmployeeNo
FROM
Salary;
Yukarıdaki sorgu yürütüldüğünde aşağıdaki çıktıyı üretir. Yinelenenleri de döndürdüğünü görebilirsiniz.
EmployeeNo
-----------
101
104
102
105
103
101
104
102
103
INTERSECT
INTERSECT komutu, birden çok SELECT deyiminden gelen sonuçları birleştirmek için de kullanılır. İkinci SELECT deyiminde karşılık gelen eşleşmeye sahip olan ilk SELECT deyiminden satırları döndürür. Başka bir deyişle, her iki SELECT deyiminde bulunan satırları döndürür.
Sözdizimi
INTERSECT ifadesinin temel sözdizimi aşağıdadır.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
INTERSECT
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Misal
Aşağıda INTERSECT ifadesine bir örnek verilmiştir. Her iki tabloda da bulunan EmployeeNo değerlerini döndürür.
SELECT EmployeeNo
FROM
Employee
INTERSECT
SELECT EmployeeNo
FROM
Salary;
Yukarıdaki sorgu yürütüldüğünde aşağıdaki kayıtları döndürür. EmployeeNo 105, MAAŞ tablosunda bulunmadığı için hariç tutulmuştur.
EmployeeNo
-----------
101
104
102
103
EKSİ / HARİÇ
MINUS / EXCEPT komutları, birden çok tablodan satırları birleştirir ve ilk SELECT'te olan ancak ikinci SELECT'te olmayan satırları döndürür. İkisi de aynı sonuçları verir.
Sözdizimi
MINUS ifadesinin temel sözdizimi aşağıdadır.
SELECT col1, col2, col3…
FROM
<table 1>
[WHERE condition]
MINUS
SELECT col1, col2, col3…
FROM
<table 2>
[WHERE condition];
Misal
Aşağıda bir MINUS ifadesi örneği verilmiştir.
SELECT EmployeeNo
FROM
Employee
MINUS
SELECT EmployeeNo
FROM
Salary;
Bu sorgu yürütüldüğünde aşağıdaki kaydı döndürür.
EmployeeNo
-----------
105