Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

mssql group by

Merhaba arkadaşlar, ekdeki gönderdiğim şekilde tablom var. bu tabloda, Tarihe göre guruplu şekilde sorgulama yapmak istiyorum. sorgumda listelenecek alanlar, 'TarihSaat','Her bir grubun Adet bilgisi','Tutar alanının toplamı'

Yapmış olduğum sorgu su;
select TarihSaat,COUNT(*) as Adet,SUM(Tutar) as ToplamTutar from tblKuponlar group by TarihSaat

Fakat TarihSaat alanında Tarh, saat bilgisi ikiside olduğu için ve saat her bir kayıtda farklı oldu için group olarak gelmiyor. bu saat bilgisini çıkararakdan veya farklı bir yolla nasıl istediğim sekilde bir sorgu yazmam gerekir.

Ekli Dosyalar

+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • Kesali adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    208 cevap - 2 soru
    Tarih saat bilgisine göre group yaparsanız hatalı sonuç alırsınız. Mantık hatanız var. Bir şeyi grouplamak için ortak birşeyler olması lazım. Her bir saat bilgisi farklı bir kaydı getirir. Eğer güne göre grouplamak istiyorsan LEFT kullanarak sondaki saniye vs atman gerekir. Anladığım kadarıyla istediğin de bu.

    Aşağıdaki gibi dene eğer doğru anladıysan doğru sonucu verecektir.

    select LEFT(TarihSaat, 10),COUNT(*) as Adet,SUM(Tutar) as ToplamTutar from tblKuponlar group by TarihSaat
    
    • azalet adlı üyenin fotoğrafı azalet
      Kardeşim cevap için teşekürler. Fakat gruplama yapmıyor. her bir kaydı tek tek gösteriyor. nedeni su olsa gerek, gruplama yaparken tarihsaat sutunundaki değerden, saat bilgisi çıkmadan gruplama yapılıyor. buda listelerken tarihsaat sutunundaki sadece tarih kısmını listelemissin.
      9 yıl önce yazılmış 9 yıl önce güncellenmiş
    • Kesali adlı üyenin fotoğrafı Kesali
      O zaman bu şekilde olması gerekli.

      select LEFT(TarihSaat, 10) as yenisaat ,COUNT(*) as Adet,SUM(Tutar) as ToplamTutar from tblKuponlar group by yenisaat
      


      Neyse sorununu çözmüşsün.
      9 yıl önce yazılmış
    • azalet adlı üyenin fotoğrafı azalet
      Kardeşim denedim fakat bu da sonuc vermiyor tabloda yenisat kolon adı geçersiz diyor.
      9 yıl önce yazılmış
    • Kesali adlı üyenin fotoğrafı Kesali
      Mssql kurulu değil ama mysql de denedim istediğin sonucu veriyor. Zaten yeni saat kolon değilki tarihsaat yerine kullandığım alias.
      9 yıl önce yazılmış
  • azalet adlı üyenin fotoğrafı
    9 yıl önce yazılmış
    20 cevap - 4 soru
    Kardeşim tabloyu istediğim sekilde view olusturarak çözdum.
    • ercet00ilk adlı üyenin fotoğrafı ercet00ilk
      şöyle bir şey buldum, umarım işini görür dostum.
      bunları sql içinde nerde uygularsan orada cevap alırsın.

      
      -- TARİH FONKSİYONLARI : getdate(), year() , month(), day() , DateAdd() , datediff() , datepart()
      
      select GETDATE()--Şu an ki server saatini verir.
      
      select YEAR(GETDATE())
      select YEAR('10.11.2001')
      
      select Month(GETDATE())
      select Month('10.11.2001')
      
      select DAY(GETDATE())
      select DAY('10.11.2001')
      
      select DATEADD(YEAR,3,GETDATE())
      --şu anki tarihe 3 yıl ekler
      select DATEADD(MONTH,-5,GETDATE())
      -- şu an ki tarihten 5 ay geri gider.
      
      select DATEDIFF(YEAR,'10.10.2000',GETDATE())
      select DATEDIFF(month,'10.10.2012',GETDATE())
      select DATEDIFF(day,'10.10.2000',GETDATE())
      select DATEDIFF(HOUR,'10.10.2000',GETDATE())
      select DATEDIFF(MINUTE,'10.10.2000',GETDATE())
      
      -- iki tarih arasındaki farkı belittiğimiz aralıkta verir.
      
      select DATEPART(YEAR,GETDATE())
      select DATEPART(month,GETDATE())
      select DATEPART(day,GETDATE())
      select DATEPART(DAYOFYEAR, GETDATE())--Yılın kaçıncı günü
      select DATEPART(DW,getdate())--Haftanın kaçıncı günü
      
      
      9 yıl önce yazılmış