Son Haberler
Anasayfa / Yazılım / SQL / HAVING ve WHERE Deyimlerinin Değişkenler İle Birlikte Kullanımı

HAVING ve WHERE Deyimlerinin Değişkenler İle Birlikte Kullanımı

Bu yazımda MS SQL ortamında oluşturmuş olduğumuz değişkenleri WHERE ve HAVING deyimleri ile birlikte kullanacağım. Örneklere geçerek konuya devam edelim. AdventureWorks2012 veri tabanı üzerinde çalışıyorum.

Örneğin bir adet ID değişkeni oluşturalım, bu ID değişkeni içine bir değer atalım. Daha sonra bu ID değerinin içindeki değeri baz alarak, Person.Person tablosunda BusinessEntityID değeri bu değere eşit olan satırın BusinessEntityID, FirstName ve LastName kolonlarını listeleyelim.

DECLARE @ID INT; SET @ID = 3;
SELECT BusinessEntityID, FirstName, LastName FROM Person.Person
WHERE BusinessEntityID = @ID;

2013052001

Şimdi de Ad adında NVARCHAR tipinde bir değişken oluşturağım ve bu değişken içine Ab% değerini atayacağım. Daha sonra SELECT ile sorgumda bu değişkeni WHERE ile filtrelemede kullanacağım. Bunun için yine Person.Person tablosu üzerinde çalışıyorum. Person.Person tablosunda FirstName alanı Ab ile başlayan devamı ne olursa olsun tüm veri satırlarının BusinessEntityID, FirstName ve LastName alanlarını listeliyorum.

DECLARE @Ad NVARCHAR(50); SET @Ad = N'Ab%';
SELECT BusinessEntityID, FirstName, LastName FROM Person.Person
WHERE FirstName LIKE @Ad ORDER BY BusinessEntityID
GO

2013052002

Şimdi birde bir değişken daha oluşturalım ve bu değişkene önce 1 değerini daha sonra 0 değerini verelim ve bu değerleri baz alarak yine Person.Person tablosu üzerinde BusinessEntityID, FirstName, LastName alanlarını listeleyelim.

DECLARE @ID INT = 1;

SELECT BusinessEntityID, FirstName, LastName FROM Person.Person
WHERE @ID = CASE @ID WHEN 0 THEN 0 ELSE BusinessEntityID END;

SET @ID = 0;

SELECT BusinessEntityID, FirstName, LastName FROM Person.Person
WHERE @ID = CASE @ID WHEN 0 THEN 0 ELSE BusinessEntityID END;

2013052003

Sonuçlardan görüleceği üzere ID değerine 1 verdiğimde BusinessEntityID değeri 1’e eşit olan satır listeleniyor. Ama ben bu değeri 0 yaptığımda BusinessEntityID değeri 0 olan olmadığı için hepsini listeliyor.

Şimdi de HAVING ile birlikte değişken kullanalım. Bunun içinde Sales.SalesOrderHeader tablosunda TotalDue alanındaki toplam değeri 20000’den fazla olan satırları listeleyelim. Bu 20000 değerini bir değişken içine alalım. Sorgumuz şu şekilde olur:

DECLARE @Miktar INT = 20000; 
SELECT SUM(TotalDue) AS 'Toplam Satış Miktarı', CustomerID
FROM Sales.SalesOrderHeader
GROUP BY CustomerID 
HAVING SUM(TotalDue) > @Miktar;

2013052004

Bir yorum

  1. Kolay gelsin işin içinden çıkamadığım bir sorgu var yardımcı olabilir misin? hareketler adında bir tablom var no(int),personelid(int),tarih(date),saat(time(7)) şeklinde kolonlarım var benim yapmak istediğim sorgu aynı gün içinde tekrarlanan personelid satırlarını almak istiyorum

    SELECT no, personelid, tarih, diger
    FROM hareketler
    WHERE (tarih IN
    (SELECT tarih
    FROM hareketler AS h
    GROUP BY tarih
    HAVING (COUNT(tarih) > 1)))
    bu sorgu ile aynı günleri çektirebiliyorum fakat personelid tek olmasına rağmen getiriyor ben personelid birden fazla ise bana no kolonunu getirmesini istiyorum şimdiden teşekkür ederim

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir