WHERE kullanarak satırları süzme ve HAVING
WHERE ve HAVING yan tümcelerinde bir SELECT deyiminde sonuç oluşturmak için kullanılan kaynak tablodaki satırları denetlemek küme.WHERE ve HAVING süzgeçleri.Bunlar bir dizi arama koşullarını belirtin ve sonucu oluşturmak için kullanılan arama koşullarını koşulları karşılayan satırları küme.Arama koşullara uyan satırları sonuç kümesine katılmayı koşullu söylenir.Örneğin, WHERE aşağıdaki yan tümce SELECT deyim yalnızca belirli bir satış bölgesi için satırları olarak nitelendirir.
USE AdventureWorks;
GO
SELECT c.CustomerID, s.Name
FROM AdventureWorks.Sales.Customer c
JOIN AdventureWorks.Sales.Store s
ON s.CustomerID = c.CustomerID
WHERE c.TerritoryID = 1
HAVING yan tümce genellikle, GROUP BY yan tümce ile birlikte toplamak değerlerini sonuçlarını süzmek için kullanılır.Ancak, HAVING, GROUP BY belirtilebilir.HAVING yan tümce, WHERE yan tümce süzgeçleri sonra uygulanan ek filtreler belirtir.Bu süzgeç, seçim listesinde kullanılan bir toplamak işlev için uygulanabilir.Aşağıdaki örnekte WHERE yan tümce yalnızca aşan birim fiyatı ile ürün satış siparişlerini nitelendirir. $100ve HAVING Ayrıca sınırlar sonucu içeren bu sipariş için yan tümce birden fazla 100 birim.
USE AdventureWorks;
GO
SELECT OrdD1.SalesOrderID AS OrderID,
SUM(OrdD1.OrderQty) AS "Units Sold",
SUM(OrdD1.UnitPrice * OrdD1.OrderQty) AS Revenue
FROM Sales.SalesOrderDetail AS OrdD1
WHERE OrdD1.SalesOrderID in (SELECT OrdD2.SalesOrderID
FROM Sales.SalesOrderDetail AS OrdD2
WHERE OrdD2.UnitPrice > $100)
GROUP BY OrdD1.SalesOrderID
HAVING SUM(OrdD1.OrderQty) > 100
Koşullar NEREDE aramak ve HAVING yan tümcesi
Arama koşullarını veya WHERE ve HAVING yan tümcelerinde niteliklerini aşağıdakiler olabilir:
Karşılaştırma işleçleri, örneğin: =, < >, <, and >
Örneğin, aşağıdaki sorgu, gelen satırları alır Product tablo sınıfında olan ürünler H.
SELECT ProductID, Name FROM AdventureWorks.Production.Product WHERE Class = 'H' ORDER BY ProductID
Aralıkları (BETWEEN ve NOT ARASıNDA)
Örneğin, aşağıdaki sorgu, satırları alır Product Tablo liste fiyatlarını 100 TL'den 500.
SELECT ProductID, Name FROM AdventureWorks.Production.Product WHERE ListPrice BETWEEN 100 and 500 ORDER BY ListPrice
Listeleri (IN, NOT IN)
Örneğin, aşağıdaki sorgu renklerinin listesini kalan ürünleri alır.
SELECT ProductID, Name FROM AdventureWorks.Production.Product WHERE Color IN ('Multi', 'Silver') ORDER BY ProductID
Eşleşme deseni (LIKE ve NOT LIKE)
Örneğin, aşağıdaki sorgu, satırları alır Product Ürün adı harfleriyle başladığı tablosu Ch.
SELECT ProductID, Name FROM AdventureWorks.Production.Product WHERE Name LIKE 'Ch%' ORDER BY ProductID
Not
Yalnızca, kullanabileceğiniz WHERE koşulları text sütunları PATINDEX(); gibi başka bir veri türü veya işleçlerin, IS NULL, IS NOT NULL, LIKE ve NOT LIKE gibi döndüren işlevlerdir.
Boş değerler (IS NULL ve IS NOT NULL)
Örneğin, aşağıdaki sorgu, satırları alır Customer Tablo, müşterilerin satışçı kimliği null değil.
SELECT s.Name FROM AdventureWorks.Sales.Customer c JOIN AdventureWorks.Sales.Store s ON c.CustomerID = S.CustomerID WHERE c.SalesPersonID IS NOT NULL ORDER BY s.Name
Not
null değerlerle karşılaştırırken dikkatli olun.Örneğin, belirtme = NULL, IS NULL belirten aynı değil.Daha fazla bilgi için bkz:Null değerler.
= (ALL tüm kayıtlar >Tümü <TÜM = TÜMÜ)
Örneğin, aşağıdaki sorgu, sipariş ve ürün kimlikleri alır SalesOrderDetail Ürün miktarını sevkiyatının tablo için sınıfı herhangi bir ürünü sevk miktardan büyük H.
USE AdventureWorks; GO SELECT OrdD1.SalesOrderID, OrdD1.ProductID FROM Sales.SalesOrderDetail OrdD1 WHERE OrdD1.OrderQty > ALL (SELECT OrdD2.OrderQty FROM Sales.SalesOrderDetail OrdD2 JOIN Production.Product Prd ON OrdD2.ProductID = Prd.ProductID WHERE Prd.Class = 'H') GO
Bu koşullar (VE, VEYA, DEĞIL) birleşimleri
Örneğin, aşağıdaki sorgu hangi da liste fiyatını 500 TL veya ürün sınıfı olandan daha az olan tüm ürünleri alır. L ve ürün satırı S.
SELECT ProductID, Name FROM AdventureWorks.Production.Product WHERE ListPrice < 500 OR (Class = 'L' AND ProductLine = 'S')
Dikkat bir Unicode dize ararken bir WHERE yan tümce, put N karakter arama dizesini önce:
SELECT CustomerID FROM AdventureWorks.Sales.Store WHERE Name = N'Berglunds snabbkp'
See Also