Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Msg 512, Level 16, State 1, Line 18 hatasını aşmak
#1
Merhaba,

Aşağıda yer alan sorgunu "Msg 512, Level 16, State 1, Line 18" hatasına yakalanmadan başka ne şekilde düzenleye bilirim ?
3 farklı proje olduğu için 3 satır halinde gelmesi gerekli.

iyi günler,


 DECLARE @SUREGTOPLAM FLOAT= (select (S.Toplam_Ay) from  Saat_Tablo1 S where  (S.AY=@AY) AND (S.Yil=@YIL)  and S.id  IN ('2','3','35')) 
Cevapla
#2
(06-02-2025, Saat: 14:23)denizfatihi Adlı Kullanıcıdan Alıntı: Merhaba,

Aşağıda yer alan sorgunu "Msg 512, Level 16, State 1, Line 18" hatasına yakalanmadan başka ne şekilde düzenleye bilirim ?
3 farklı proje olduğu için 3 satır halinde gelmesi gerekli.

iyi günler,


 DECLARE @SUREGTOPLAM FLOAT= (select (S.Toplam_Ay) from  Saat_Tablo1 S where  (S.AY=@AY) AND (S.Yil=@YIL)  and S.id  IN ('2','3','35')) 

Merhaba,

 DECLARE @SUREGTOPLAM FLOAT= (select sum(S.Toplam_Ay) from  Saat_Tablo1 S where  (S.AY=@AY) AND (S.Yil=@YIL)  and S.id  IN ('2','3','35')) 


sum ile toplam alma işlemi yapmalısınız hata sebebi birden fazla kayıt dönmesi. Ayrıca id alanı int alan ise (2,3,35) şeklinde yazmanız yeterli.
Cevapla
#3
(06-02-2025, Saat: 14:44)yasard Adlı Kullanıcıdan Alıntı:
(06-02-2025, Saat: 14:23)denizfatihi Adlı Kullanıcıdan Alıntı: Merhaba,

Aşağıda yer alan sorgunu "Msg 512, Level 16, State 1, Line 18" hatasına yakalanmadan başka ne şekilde düzenleye bilirim ?
3 farklı proje olduğu için 3 satır halinde gelmesi gerekli.

iyi günler,


 DECLARE @SUREGTOPLAM FLOAT= (select (S.Toplam_Ay) from  Saat_Tablo1 S where  (S.AY=@AY) AND (S.Yil=@YIL)  and S.id  IN ('2','3','35')) 

Merhaba,

 DECLARE @SUREGTOPLAM FLOAT= (select sum(S.Toplam_Ay) from  Saat_Tablo1 S where  (S.AY=@AY) AND (S.Yil=@YIL)  and S.id  IN ('2','3','35')) 


sum ile toplam alma işlemi yapmalısınız hata sebebi birden fazla kayıt dönmesi. Ayrıca id alanı int alan ise (2,3,35) şeklinde yazmanız yeterli.

Sum ile toplam alınca problem yok zaten, ama bana id bazında lazım o sebeple başka nasıl çözüm olur diye soruyorum.
Cevapla
#4
(06-02-2025, Saat: 15:07)denizfatihi Adlı Kullanıcıdan Alıntı:
(06-02-2025, Saat: 14:44)yasard Adlı Kullanıcıdan Alıntı: Merhaba,

 DECLARE @SUREGTOPLAM FLOAT= (select sum(S.Toplam_Ay) from  Saat_Tablo1 S where  (S.AY=@AY) AND (S.Yil=@YIL)  and S.id  IN ('2','3','35')) 


sum ile toplam alma işlemi yapmalısınız hata sebebi birden fazla kayıt dönmesi. Ayrıca id alanı int alan ise (2,3,35) şeklinde yazmanız yeterli.

Sum ile toplam alınca problem yok zaten, ama bana id bazında lazım o sebeple başka nasıl çözüm olur diye soruyorum.

Bu yazdığınız bir prosedürün mü yoksa fonksiyonun mu parçası. 
Tek bir değişkende toplam dışında bunu alamazsınız.

Eğer bunu fonksiyon olarak kullanıyor iseniz "id" alanı da parametre olarak geçip ayrı şekilde istediğiniz id değerlerinin toplamını almış olursunuz.

Prosedür şeklinde kullanıyor iseniz değişken kullanmadan id alanını group by alın 3 satır dönecektir.
Cevapla
#5
Merhaba,

Araya geçici tablo ekleyerek çözüme ulaştım, belki başka birinin işine yarar diye ekliyorum.
@SUREGTOPLAM alanını hesaplama yapmak için kullanılacaktım. Aşağıdaki şekilde yapıldı.

Kolay gelsin.  


declare  @SureDetay table (idK float,  ToplamAy float)
INSERT INTO @SureDetay (idK,  ToplamAy)

select S.id, S.Toplam_Ay from  Saat_Tablo1 S where  (S.AY=@AY) AND (S.Yil=@YIL)  and S.id  IN ('2','3','35')


select SD.* from @SureDetay SD

((@45GTOPLAM / @SUREGTOPLAM ) * SD.ToplamAy) 


Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Maximum stored procedure, nesting level exceeded (limit 32) hatası Bay_Y 6 5.095 08-08-2018, Saat: 14:15
Son Yorum: Tuğrul HELVACI



Konuyu Okuyanlar: 1 Ziyaretçi