Forum
select cari_kod, sum (borc - kapatilmis_tutar) as Sonuc,VADE_TARIHI from tblcahar where cari_kod <='8888' and VADE_TARIHI>CAST( CONVERT( CHAR(8), GetDate(), 112) AS DATETIME)
group by cari_kod ,VADE_TARIHI
arkadaşlar böyle bir sorgum var bu sorguda yapmak istediğim tarih sonucuna göre haftalara bölmek yani 1. hafta da sonuç tutarı şukadar 2 haftada sonuç tutarı şu kadar gibi.Carilere göre
CAST( CONVERT( CHAR(8), GetDate(), 112) AS DATETIME) işe yaramasına sevindim.
select cari_kod, sum (coalesce(borc - kapatilmis_tutar,0)) as Sonuc, DATEPART(YEAR,VADE_TARIHI) AS 'Yıl',DATEPART(wk,VADE_TARIHI) AS 'Hafta #' , VADE_TARIHI from tblcahar where cari_kod <='8888' and VADE_TARIHI>CAST( CONVERT( CHAR(8), GetDate(), 112) AS DATETIME) group by cari_kod ,VADE_TARIHI, DATEPART(YEAR,VADE_TARIHI), DATEPART(wk,VADE_TARIHI)
Siz istememişsiniz ancak önceki paylaştığınız sorguda riskli bir kısım var o da Sonuc. Toplama giren kısımlarda null değerler varsa bütün sonucu etkileyecektir. Bunu önlemek için Coalesce fonksiyonunu kullnarak null değerlerin toplamı etkilemesini önledim.
NOT: Sorgu çalışırken hata verirse ayıraç olarak kullandığınız "," karakteri yerine ";" karakterini kullanarak tekrar deneyin.
Mert Bey Çok Teşekkürler bu 3 oldu sorunumu çözdünüz. Son Verdiğiniz Kod da sağlıklı bir şekilde çalıştı. :d
Haftaları istediğim gibi listeledim ama benim yapmak istediğim 1.Hafta 11-27 Nisan vb.. gibi bişey yazabilirmiyiz, Haftaların hangi tarihler arasında olduğunu ayrı bi kolonda listeleyebilirmiyiz.
O zaman sorgumuz şöyle olsun:
select cari_kod, sum (coalesce(borc - kapatilmis_tutar,0)) as Sonuc, DATEPART(YEAR,VADE_TARIHI) AS 'Yıl',DATEPART(wk,VADE_TARIHI) AS 'Hafta #' , MIN(DATEADD(wk, DATEDIFF(wk, 0, dbo.tbEgitim.kayittarihi), 0)) AS 'Haftanın İlk Günü Tarihi', MIN(DATEADD(wk, DATEDIFF(wk, - 7, dbo.tbEgitim.kayittarihi), 0)) AS 'Haftanın Son Günü Tarihi', VADE_TARIHI from tblcahar where cari_kod <='8888' and VADE_TARIHI>CAST( CONVERT( CHAR(8), GetDate(), 112) AS DATETIME) group by cari_kod ,VADE_TARIHI, DATEPART(YEAR,VADE_TARIHI), DATEPART(wk,VADE_TARIHI)
Mert Bey Çok Teşekkürler örnek verdiğin sorgu sorunsuz çalıştı.
Çalışmasına memnun oldum.
Yalnız bir yerde yanlış yazdığımı farkettim: MIN(DATEADD(wk, DATEDIFF(wk, - 7, dbo.TBLCAHAR.VADE_TARIHI), 0)) yazdığımızda bir sonraki haftanın ilk gününü göstermiş oluyoruz haftanın son günü olarak ki bu yanlış olmuş.
Bunun yerine MIN(DATEADD(wk, DATEDIFF(wk, - 7, dbo.TBLCAHAR.VADE_TARIHI), - 2)) yazılmalı
MIN(DATEADD(wk, DATEDIFF(wk,-6, dbo.TBLCAHAR.VADE_TARIHI),0))
Mert Bey Sizin dediğinizi daha önceden farketmiştim hatta onu sizin dediğiniz gibi -6 da yapmıştım ama olmadı, heralde kodun fonksiyonu böyle diye düşündüm siz cavabı verince o satırı sizinle paylaşmak istedim, kod satırı yukarıdadır, -6 yaptığım halde başlangıç tarihini (11.04.2011 pazartesi ) bitiş tarihini (18.04.2011) olarak sorguyu döndürüyor, Sorun sizce ne olabilir kodlar aynı değişen bişey yok.
İyi Çalışmalar
Yanlış referans olmasın diye önceki mesajda düzelttim; dener misiniz