Aracılığıyla paylaş


where kullanarak satırları süzme ve HAVING

where ve HAVING yan tümcelerinde Seç içinde deyim sonuç küme oluşturmak için kullanılan kaynak tablolardan satırları denetlemek.where ve HAVING filtreler.Bunlar bir dizi arama koşullarını belirtin ve arama koşullarını koşullarını karşılayan satır sonuç küme oluşturmak için kullanılır.Arama koşullara uyan satırları'na katılmak koşullu olduğu söylenir sonuç küme.Örneğin, WHERE yan tümce tümce tümce aşağıdaki SELECT deyim niteleyen satırların yalnızca bir özel satış bölgesi.

USE AdventureWorks2008R2;
GO
SELECT c.CustomerID, s.Name
FROM AdventureWorks2008R2.Sales.Customer c
JOIN AdventureWorks2008R2.Sales.Store s
ON s.BusinessEntityID = c.CustomerID
WHERE c.TerritoryID = 1;

HAVING yan tümce tümce tümce genellikle group by yan tümce tümce tümce ile birlikte filtre uygulamak için kullanılan sonuçlar , toplu değerlerini.Ancak, HAVING grupla belirtilebilir.HAVING yan tümce tümce tümce where yan tümce tümce tümce filtreleri sonra uygulanan ek filtreler belirtir.Bu filtreler uygulanabilir bir toplu işlev seçme listesinde kullanılan.Aşağıdaki örnekte, WHERE yan tümce tümce tümce yalnızca niteleyen siparişleri satış birim fiyatı aşan bir ürünle $100ve HAVING yan tümce tümce tümce içeren yalnızca bu siparişler için ayrıca sonucu kısıtlar birden fazla 100 birimleri.

USE AdventureWorks2008R2;
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;

Arama koşulları where ve HAVING yan tümceleri

Arama koşulu veya where ve HAVING yan tümcelerinde nitelikleri aşağıdakiler olabilir:

  • Karşılaştırma işleçleri gibi: =, < >, <, and >

    Örneğin, aşağıdaki sorgu satırlarını alır Product sınıfında olan ürünler için tablo H.

    SELECT ProductID, Name
    FROM AdventureWorks2008R2.Production.Product
    WHERE Class = 'H'
    ORDER BY ProductID;
    
  • Değer aralıkları (between ve arasında değil)

    Örneğin, aşağıdaki sorgu satırlarını alır Product Tablo ile liste fiyatları 100 $500.

    SELECT ProductID, Name
    FROM AdventureWorks2008R2.Production.Product
    WHERE ListPrice BETWEEN 100 and 500
    ORDER BY ListPrice;
    
  • Listeleri (ın, not ın)

    Örneğin, aşağıdaki sorgu listesindeki renkleri, düşen ürünleri alır.

    SELECT ProductID, Name
    FROM AdventureWorks2008R2.Production.Product
    WHERE Color IN ('Multi', 'Silver')
    ORDER BY ProductID;
    
  • Desen Eşleşmeleri (ve değil ister gibi)

    Örneğin, aşağıdaki sorgu satırlarını alır Product Tablo, ürün adı başlayan harfler ile Ch.

    SELECT ProductID, Name
    FROM AdventureWorks2008R2.Production.Product
    WHERE Name LIKE 'Ch%'
    ORDER BY ProductID;
    

    Not

    Üzerinde kullanabilirsiniz nerede koşulları text sütunları olan PATINDEX(); gibi başka bir veri türüne geri dönmek işlevleri veya IS null, IS not null gibi ve benzer değil gibi işleçler.

  • Null değerler (IS null ve IS not null)

    Örneğin, aşağıdaki sorgu satırlarını alır Customer Tablo hangi müşterilerin satışçı kimlikleri olan null.

    SELECT s.Name
    FROM AdventureWorks2008R2.Sales.Customer c
    JOIN AdventureWorks2008R2.Sales.Store s
    ON c.CustomerID = S.CustomerID
    WHERE c.CustomerID IS NOT NULL
    ORDER BY s.Name;
    

    Not

    null değerlerle karşılaştırırken dikkatli olun.Örneğin, belirtme = null değil IS null belirterek aynı.Daha fazla bilgi için bkz: Null değerler.

  • Tüm kayıtların (= all >, tüm <any = all)

    Örneğin, aşağıdaki sorgu, sipariş ve ürün kimlikleri alır SalesOrderDetail , sevk edilen ürün miktarı büyük sınıfındaki herhangi bir ürünü sevk miktarı tablo H.

    USE AdventureWorks2008R2;
    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 tüm ürünleri, hangi ya da liste fiyatı 500 TL'den az olacak veya ürün sınıfı için alır L ve ürün satırı S.

    SELECT ProductID, Name
    FROM AdventureWorks2008R2.Production.Product
    WHERE ListPrice < 500
       OR (Class = 'L' AND ProductLine = 'S');
    

    Bir Unicode dize ararken dikkat edin bir WHERE yan tümce tümce tümce, koyun N arama dizesi önce karakter:

    SELECT BusinessEntityID 
    FROM AdventureWorks2008R2.Sales.Store 
    WHERE Name = N'Riders Company';