Selamlar,
Veritabanı güzel düzenlenmemiş ki bu sıkıntıları yaşıyorsunuz. Bu tür durumlarda, Giren hanesi ile Çıkan hanesi ayrı alanlarda tutarsanız, raporlarda fazla sıkıntı yaşamazsınız.
Bir tavsiye daha, GETDATE()'i kullandığınızda sonuç olarak size DATE ve TIME olarak geri döner. Sadece DATE kullanmak isterseniz DATEPART ile veya, gelen DATETIME bilgisini önce DOUBLE veya FLOAT'a çevireceksiniz, sonrasında da ROUND fonksiyonunun TRUNCATE işlemini kullanarak DATE'i elde edebilirsiniz.
Veya daha kısa yollu bir şey uygulayabilirsiniz.
Query'nizde dönen hata ise aslında GROUP BY yaptığınızda, SQL yorumlayıcıları, Query'lerin içinde geçen FIELD'ları (Doğrudan işe yaramasa bile) WHERE Koşulunda geçtiğinde, SELECT'in kendinde de istiyor. Oraya koyduğunuzda da bu sefer GROUP BY'da istiyor.
Tek Query'de almak yerine Ard arda ekilecek iki Query sonuçlarını bir TEMP tabloya atın, ve 3. SELECT cümlesinde de bu TEMP tablodan sonucu döndürün.
Süre olarak çok da farketmeyecektir, (Umarım milyon düzeylerinde kaydınız yoktur, yoksa farkeder

)
Neyse Kolay Gelsin