SQL Sorgu

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

SQL Sorgu

Mesaj gönderen denizfatihi »

Merhaba,

Aşğaıdaki sorgunun having kısmını eklemeye çalışınca hata alıyorum, sorun nerede olabilir ?

Sorgudaki hatalı kısım

Kod: Tümünü seç

(SELECT Y.* FROM YILIZINHARE Y 
WHERE Y.SICIL =@SICIL
GROUP BY Y.SICIL
HAVING SUM(COALESCE(Y.HIZIN,0)) >= SUM(COALESCE(Y.IZIN,0))

Genel sorgu

Kod: Tümünü seç

--DECLARE @SICIL int
DECLARE @SICIL int=219
SELECT TOP 1 A.ID, COALESCE(A.IZIN, 0) AS IZIN, COALESCE(A.KAPAGUN,0) AS KULKAP, 
(COALESCE(A.IZIN, 0)+ COALESCE(A.KAPAGUN,0)) AS SATKAPGUN, 
(SELECT SUM(COALESCE(HIZIN, 0)) FROM YILIZINHARE B WHERE B.SICIL =@SICIL) AS TOPHAKEDIS,
(SELECT TOP 1 D.ID FROM YILIZINHARE D WHERE D.SICIL =@SICIL AND COALESCE(D.KAPAGUN,0) <> COALESCE(D.HIZIN, 0)) AS HID, 
(SELECT TOP 1 C.YIL FROM YILIZINHARE C WHERE C.SICIL =@SICIL AND C.TIPGC='G' 
AND COALESCE(C.KAPAGUN,0) <> COALESCE(C.HIZIN, 0) ORDER BY C.HAKEDIS ) AS YIL,
(SELECT TOP 1 COALESCE(D.HIZIN,0) FROM YILIZINHARE D WHERE D.SICIL =@SICIL AND D.TIPGC='G' ORDER BY D.HAKEDIS) AS SATIRHAKEDIS,
(SELECT TOP 1 (COALESCE(E.IZIN, 0)+COALESCE(E.KAPAGUN,0)) FROM YILIZINHARE E WHERE E.SICIL =@SICIL AND E.TIPGC='G' ORDER BY E.HAKEDIS) AS TAHKAP,
(SELECT TOP 1 CASE 
WHEN SUM(COALESCE(F.HIZIN,0)) >= SUM(COALESCE(F.IZIN,0)) THEN SUM(COALESCE(F.IZIN,0))
WHEN SUM(COALESCE(F.HIZIN,0)) <= SUM(COALESCE(F.IZIN,0)) THEN SUM(COALESCE(F.IZIN,0))
ELSE SUM(COALESCE(F.HIZIN,0))- SUM(COALESCE(F.IZIN,0)) END AS KAPAMA FROM  YILIZINHARE F
WHERE F.SICIL =@SICIL 
AND 
(SELECT TOP 1 CASE 
WHEN SUM(COALESCE(F.HIZIN,0)) >= SUM(COALESCE(F.IZIN,0)) THEN SUM(COALESCE(F.IZIN,0))
WHEN SUM(COALESCE(F.HIZIN,0)) <= SUM(COALESCE(F.IZIN,0)) THEN SUM(COALESCE(F.IZIN,0))
ELSE SUM(COALESCE(F.HIZIN,0))- SUM(COALESCE(F.IZIN,0)) END AS KAPAMA FROM  YILIZINHARE F
WHERE F.SICIL =@SICIL) <>  
(SELECT TOP 1 COALESCE(D.HIZIN,0) FROM YILIZINHARE D WHERE D.SICIL =@SICIL AND D.TIPGC='G' ORDER BY D.HAKEDIS)
) AS TOPKULL
FROM YILIZINHARE A
WHERE A.SICIL =@SICIL AND A.TIPGC='C' 
AND A.KOD=1 
AND 1=1 

AND (SELECT G.* FROM YILIZINHARE G 
WHERE G.SICIL =@SICIL
GROUP BY G.SICIL
HAVING SUM(COALESCE(G.HIZIN,0)) >= SUM(COALESCE(G.IZIN,0)))

ORDER BY A.HAKEDIS



Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7586
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Re: SQL Sorgu

Mesaj gönderen mussimsek »

Merhaba,

Group by kullandığınız zaman select kısmında sadece bu alanları ve sum, min, max gibi fonksiyonları kullanabilirsiniz. Başka alan veya select * gibi kullanamazsınız. Yani ilk sorgunuzda sadece "select SICIL" diye kullanabilirsiniz.

Bu şekilde düzeltip deneyin, başka hata veriyorsa hata metni ile tekrar yazın.

Kolay gelsin.
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: SQL Sorgu

Mesaj gönderen denizfatihi »

Hocam selam,

Sorguyu parçamak zorunda kaldım işimde çözüldü bilgi için teşekkür ederim.
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: SQL Sorgu

Mesaj gönderen denizfatihi »

Merhaba,

Aşağıdaki sorguda parametre olarak satır id numaralarını vermeme rağmen ayrı ayrı satırlarda gösteriyor.
Tek satır halinde nasıl gruplama yapabilirim ?

Kod: Tümünü seç

DECLARE @SICIL int=64
SELECT CASE 
WHEN ((SELECT SUM(COALESCE(A.HIZIN,0)- COALESCE(A.KAPAGUN,0)) FROM YILIZINHARE A 
WHERE A.SICIL =@SICIL AND A.ID =66884 )>= (SELECT COALESCE(A.IZIN,0) FROM YILIZINHARE A 
WHERE A.SICIL =@SICIL AND A.ID =842 )) THEN COALESCE(A.IZIN,0)

WHEN  ((SELECT SUM(COALESCE(A.HIZIN,0)- COALESCE(A.KAPAGUN,0)) FROM YILIZINHARE A
WHERE A.SICIL =@SICIL AND A.ID =66884 ) < (SELECT COALESCE(A.IZIN,0) FROM YILIZINHARE A  
WHERE A.SICIL =@SICIL AND A.ID =842 )) THEN COALESCE(A.HIZIN,0) END AS KAPAMA 
FROM YILIZINHARE A WHERE A.SICIL =@SICIL 
GROUP BY A.SICIL,A.ID, A.HIZIN, A.IZIN,A.KAPAGUN 
emrahgs
Üye
Mesajlar: 110
Kayıt: 08 Tem 2008 06:25
Konum: Antalya

Re: SQL Sorgu

Mesaj gönderen emrahgs »

Hocam Group By da Kullanıdığın Alanların Bir Tanesinde Değerler Farkldır Gruplama Yapılamadığı İçin Ayrı ayrı Satırları Getiriyor Olabilir

GROUP BY A.SICIL,A.ID, A.HIZIN, A.IZIN,A.KAPAGUN
Cevapla