En Son Tarihi Bulmak

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
ozcank
Üye
Mesajlar: 876
Kayıt: 28 Nis 2005 04:29

En Son Tarihi Bulmak

Mesaj gönderen ozcank » 09 Mar 2020 06:18

Arkadaşlar Merhaba; Hazırladığım raporda en son tarihi nasıl bulabilirim? Yardımınıza ihtiyacım var.
Bu şekilyle hata veriyor.


"An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference."

Kod: Tümünü seç

SELECT DISTINCT CS.CARI_ISIM,SH.STOK_KODU,SH.STHAR_TARIH,SH.DEPO_KODU,SH.STHAR_GCMIK,SH.STHAR_BF,SH.FISNO,ST.STOK_ADI,SUM(SH.STHAR_SATISK*100000) AS ISKONTO1 ,SH.STHAR_SATISK2,SH.STRA_SATISK3,SH.STRA_SATISK4,SH.STRA_SATISK5,SH.STRA_SATISK6
FROM TBLSTHAR SH
INNER JOIN TBLSTSABIT ST ON ST.STOK_KODU=SH.STOK_KODU
INNER JOIN TBLCASABIT CS ON CS.CARI_KOD=SH.STHAR_CARIKOD
WHERE SH.STHAR_FTIRSIP='2' AND SH.DEPO_KODU='1' AND SH.STHAR_TARIH=MAX(SH.STHAR_TARIH)
GROUP BY CS.CARI_ISIM,SH.DEPO_KODU,SH.STHAR_GCMIK,SH.STHAR_BF,SH.STHAR_TARIH,SH.FISNO,SH.STOK_KODU,ST.STOK_ADI,SH.STHAR_SATISK ,SH.STHAR_SATISK2,SH.STRA_SATISK3,SH.STRA_SATISK4,SH.STRA_SATISK5,SH.STRA_SATISK6
HAVING SH.STHAR_TARIH=(SELECT MAX(SH.STHAR_TARIH) FROM TBLSTHAR)

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7516
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul
İletişim:

Re: En Son Tarihi Bulmak

Mesaj gönderen mussimsek » 09 Mar 2020 07:46

Hangi veritabanı bu?

1. Önce tarihi bulup, değişkene koysanız. O değişkeni kullansanız.

Kod: Tümünü seç

declare @DLR_TARIH datetime

select @DLR_TARIH=MAX(SH.STHAR_TARIH) FROM TBLSTHAR
..
gibi.

2. Where kısmında maksimum tarih olayını zaten kullanmışsınız. dolayısıyla having'te ayrıca belirtmeye gerek olmaması lazım. "HAVING SH.STHAR_TARIH" yeterli olmalı.

Kolay gelsin.

ozcank
Üye
Mesajlar: 876
Kayıt: 28 Nis 2005 04:29

Re: En Son Tarihi Bulmak

Mesaj gönderen ozcank » 09 Mar 2020 08:48

Netsisin veritabanı TBLSTHAR

ozcank
Üye
Mesajlar: 876
Kayıt: 28 Nis 2005 04:29

Re: En Son Tarihi Bulmak

Mesaj gönderen ozcank » 09 Mar 2020 01:41

Dediğiniz şekilde yaptım yine hata veriyor

An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.

Kod: Tümünü seç

declare @TRH_TARIH datetime
SELECT DISTINCT CS.CARI_ISIM,SH.STOK_KODU,SH.STHAR_TARIH,SH.DEPO_KODU,SH.STHAR_GCMIK,SH.STHAR_BF,SH.FISNO,ST.STOK_ADI,SUM(SH.STHAR_SATISK*100000) AS ISKONTO1 ,SH.STHAR_SATISK2,SH.STRA_SATISK3,SH.STRA_SATISK4,SH.STRA_SATISK5,SH.STRA_SATISK6
FROM TBLSTHAR SH
INNER JOIN TBLSTSABIT ST ON ST.STOK_KODU=SH.STOK_KODU
INNER JOIN TBLCASABIT CS ON CS.CARI_KOD=SH.STHAR_CARIKOD
WHERE SH.STHAR_FTIRSIP='2' AND SH.DEPO_KODU='1' AND SH.STHAR_TARIH=MAX(SH.STHAR_TARIH)
GROUP BY CS.CARI_ISIM,SH.DEPO_KODU,SH.STHAR_GCMIK,SH.STHAR_BF,SH.STHAR_TARIH,SH.FISNO,SH.STOK_KODU,ST.STOK_ADI,SH.STHAR_SATISK ,SH.STHAR_SATISK2,SH.STRA_SATISK3,SH.STRA_SATISK4,SH.STRA_SATISK5,SH.STRA_SATISK6
HAVING SH.STHAR_TARIH=@TRH_TARIH

Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7516
Kayıt: 09 Haz 2003 11:26
Konum: İstanbul
İletişim:

Re: En Son Tarihi Bulmak

Mesaj gönderen mussimsek » 10 Mar 2020 07:53

where kısmına da ekleyin değişkeni.

Kod: Tümünü seç

declare @DLR_TARIH datetime

select @DLR_TARIH=MAX(SH.STHAR_TARIH) FROM TBLSTHAR

SELECT DISTINCT CS.CARI_ISIM,SH.STOK_KODU,SH.STHAR_TARIH,SH.DEPO_KODU,SH.STHAR_GCMIK,SH.STHAR_BF,SH.FISNO,ST.STOK_ADI,SUM(SH.STHAR_SATISK*100000) AS ISKONTO1 ,SH.STHAR_SATISK2,SH.STRA_SATISK3,SH.STRA_SATISK4,SH.STRA_SATISK5,SH.STRA_SATISK6
FROM TBLSTHAR SH
INNER JOIN TBLSTSABIT ST ON ST.STOK_KODU=SH.STOK_KODU
INNER JOIN TBLCASABIT CS ON CS.CARI_KOD=SH.STHAR_CARIKOD
WHERE SH.STHAR_FTIRSIP='2' AND SH.DEPO_KODU='1' AND SH.STHAR_TARIH=@DLR_TARIH
GROUP BY CS.CARI_ISIM,SH.DEPO_KODU,SH.STHAR_GCMIK,SH.STHAR_BF,SH.STHAR_TARIH,SH.FISNO,SH.STOK_KODU,ST.STOK_ADI,SH.STHAR_SATISK ,SH.STHAR_SATISK2,SH.STRA_SATISK3,SH.STRA_SATISK4,SH.STRA_SATISK5,SH.STRA_SATISK6
HAVING SH.STHAR_TARIH=@DLR_TARIH

Cevapla