SQL Server’da Column is Invalid in the ORDER BY Clause Because It is not Contained in Either an Aggregate Function or the GROUP BY Clause Hatası
Herkese merhaba,
Bu yazıda SQL Server’da column is invalid in the order by clause because it is not contained in either an aggregate function or the group by clause hatası hakkında bilgi vereceğim.
SQL Server’da tablolarınızda MAX(KolonAdi), MIN(KolonAdi), COUNT(KolonAdi) gibi ifadeler kullanarak bir sorgu yazdıysanız ve bu sorguyu sıralamak istediğinizde yukarıdakine benzer bir hata alırsınız. Hatayı farklı sorgularda alırsam bu başlık altından anlatmaya devam edeceğim. Şimdilik hata aldığım sorguyu sizler ile paylaşıyorum.
SELECT MIN(UnitPrice) AS MinimumFiyat,
MAX(UnitPrice) AS MaksimumFiyat,
COUNT(UnitPrice) AS ÜrünAdedi
FROM dbo.Products
ORDER BY UnitPrice;
Yukarıdaki sorguyu çalıştırdığınızda aşağıdakine benzer bir sonuç alırsınız.
Burada Maksimum Fiyat, Minimum Fiyat ve Ürün Adedini hesaplatıyoruz ve sonra Order By yapmak istiyoruz diyoruz. SQL Server bize bu noktada hata yaptığımızı söylüyor. Hatanın Türkçesi şu şekildedir. Order By ifadesi geçersizdir çünkü toplama, sayma fonksiyonu kullanmışsınız fakat sorgunuzda Group By bulunmamaktadır.
Sorgumuzu aşağıdaki şekilde düzeltelim.
SELECT MIN(UnitPrice) AS MinimumFiyat,
MAX(UnitPrice) AS MaksimumFiyat,
COUNT(UnitPrice) AS ÜrünAdedi
FROM dbo.Products
Yukarıdaki sorguyu çalıştırdığınızda aşağıdakine benzer bir sonuç alırsınız.
Görüldüğü üzere Order By kaldırınca sonucu doğru almış olduk.
Bu noktada sorgularımızı yazarken neyi nasıl istediğimizi iyice inceleyip sorgularımızı o şekilde yazmalıyız. Aksi durumda bu tür hatalar kaçınılmaz olacaktır.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.