Bu yazımda toplama fonksiyonlarını içeren ifadenin bir WHERE cümlesinden sonra gelen alt sorgu içinde kullanılarak ana sorgudan ayrıştılarak nasıl kullanılabildiğine değineceğim. Bu gibi kullanımları SQL’de görebilirsiniz o yüzden bu detay konulara değinmemek olmaz. Şöyle bir söz dizimi ile alt sorgular oluşturulabilir :
SELECT listelenecek kolonlar FROM tablo1 WHERE değer veya kolon = (SELECT toplama fonskiyonu(kolon1) FROM tablo2
WHERE kolon2 = tablo1.kolon3)
Burada söz diziminde görüleceği üzere WHERE’den sonra bir değer veya kolon adı veriliyor daha sonra IN yerine eşittir (=) operatörü kullanılıyor. Bir kaç örnekle kullanımını görelim :
SELECT CustomerID, SalesOrderID, TotalDue FROM Sales.SalesOrderHeader AS SatisSiparisBaslik WHERE 6 = (SELECT COUNT(*) FROM Sales.SalesOrderDetail WHERE SalesOrderID = SatisSiparisBaslik.SalesOrderID);
Bir diğer örnek :
SELECT CustomerID, SalesOrderID, TotalDue FROM Sales.SalesOrderHeader AS SatisSiparisBaslik WHERE 6000 < (SELECT SUM(TotalDue) FROM Sales.SalesOrderHeader WHERE CustomerID = SatisSiparisBaslik.CustomerID);
Bu sorgumda TotalDue toplamı 6000’den daha fazla olan müşterilerin siparişlerine dair bilgiler listenecektir.
Bir başka örnek :
SELECT CustomerID FROM Sales.Customer AS Musteri WHERE CustomerID > (SELECT SUM(TotalDue) FROM Sales.SalesOrderHeader WHERE CustomerID = Musteri.CustomerID);
Bu sorguda alt sorguda belirtilen bir toplama fonksiyonunun bir normal kolon ile karşılaştırılması ele alınmıştır.