Herkese merhaba,
Bu yazıda size SQL Server’da NText ya da Text alanındaki değerlere Group By yapılması hakkında bilgi vereceğim. SQL Server’da Text ya da NText veri tipine sahip sütunlarda doğrudan Group By komutunu çalıştıramıyoruz. Konu hakkındaki kodları aşağıda görmektesiniz.
--Tablo oluşturulması
CREATE Table Bolumler(
BolumAd TEXT,
BolumKisiSayisi int
)
--Tabloya veri eklenmesi işlemi
INSERT INTO dbo.Bolumler
( BolumAd, BolumKisiSayisi )
VALUES ( 'Konya', -- BolumAd - text
20 -- BolumKisiSayisi - int
)
INSERT INTO dbo.Bolumler
( BolumAd, BolumKisiSayisi )
VALUES ( 'Konya', -- BolumAd - text
10 -- BolumKisiSayisi - int
)
INSERT INTO dbo.Bolumler
( BolumAd, BolumKisiSayisi )
VALUES ( 'Ankara', -- BolumAd - text
15 -- BolumKisiSayisi - int
)
INSERT INTO dbo.Bolumler
( BolumAd, BolumKisiSayisi )
VALUES ( 'İstanbul', -- BolumAd - text
25 -- BolumKisiSayisi - int
)
--Sorgumuzu çalıştırma işlemi
SELECT BolumAd ,
SUM(BolumKisiSayisi)
FROM dbo.Bolumler
GROUP BY BolumAd
/*
Msg 306, Level 16, State 2, Line 41
The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.
*/
--Doğru sorgumuz (Cast işlemi yapılarak sorun çözülür)
SELECT CAST(BolumAd AS NVARCHAR(50)),
SUM(BolumKisiSayisi)
FROM dbo.Bolumler
GROUP BY CAST(BolumAd AS NVARCHAR(50))
Cast işlemi yapmadan yaptığımızda bize bir hata döndürdü. Bu hatayı yukarıda görmektesiniz. BolumAd kısmını cast ederek işlemi yaptığımızda ise doğru şekilde çalıştığını gördük. Dikkat edilmesi gereken nokta ise hem group by kısmında hem de select kısmında cast etmeniz gerekliliği.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.
