SQL Server ‘Subquery Returned More Than 1 Value’ Hatası

Yazdığınız sql cümlelerinde yeri geldiğinde subquery ile veri alma ihtiyacı duyabiliyorsunuz 1 kayıt gelmesi gereken durumlarda 1’den fazla kayıt geldiğinde bu hatayı vermesi olası bir durumdur.

Yazdığınız sql cümlelerinde yeri geldiğinde subquery ile veri alma ihtiyacı duyabiliyorsunuz 1 kayıt gelmesi gereken durumlarda 1’den fazla kayıt geldiğinde bu hatayı vermesi olası bir durumdur.

Hatanın tam hali

SqlException: Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

Bu hatanın çözümü için ise hatanın devamındada belirtildiği gibi koşullar ekleyerek tek kayıt gelmesini sağlayınız veya koşul varsa 1’e düşürebilmek için koşul sayısını arttırmalısınız.

SQL Server ‘Subquery Returned More Than 1 Value’ Hatası
5 (100%) 2 oy

8 yorum

  1. ama bilinçli olarak böyle olsun istiyorum, mesela x tablosundaki ID leri group By yaparak Y tablosuna isimlerini çekme gerekip yani select isim from Y where ID=(X tablosundaki 1 den fazla ID için)

    1. ID = Yerine ID IN (X tablosundaki 1 den fazla ID icin) kullanirsaniz boylelikle subquery den 1 den fazla sonuc donsede istediginiz sonuc baska bir hata yoksa gelecektir.

  2. Merhabalar,

    Aşağıdaki sql kodunda subquery hatası alıyorum. Yarımcı olursanın çok sevinirim.

    F0105TBLCARI tablosundan firma adını çekmek istediğimde bu hata çıkıyor karşıma.

    1. Merhaba,

      Aldığınız hatayı tam olarak anlayabilmek için ilgili hatayı yazarmısınız yada en iyisi dummy datalı bir şekilde sorgunuzu sqlfiddle.com adresinden çalıştırıp kodunuzun ve datanızın yer aldığı örneği bizimle paylaşırmısınız.

  3. MERHABALAR;

    Msg 512, Level 16, State 1, Line 1
    Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

    Aşagıdaki kodu çalıştırırken bu hatayı alıyorum.

    SELECT TBLBIRIMLEREX.BARCODE, STK.STOKKODU
    , STK.MALINCINSI I,KTR.TIPACIKLAMA,
    CAST(TBLBIRIMLEREX.SATISFIYATI1 AS NUMERIC(10, 2)) AS SATISFIYATI,
    (SELECT CAST(CARPAN AS NUMERIC(10,0))
    FROM F0101TBLBIRIMLEREX WHERE STOKNO = STK.IND AND
    BIRIMADI = ‘KOLİ’) AS CARPAN, STK.KOD1,
    STK.KOD2, STK.KOD3, STK.KOD4, STK.KOD5,STK.KOD6, STK.KOD7,
    STK.KOD8, STK.KOD9, STK.KOD10
    ,CAST((SELECT ISNULL(SUM(ENVANTER), 0) FROM F0101D0001TBLDEPOENVANTER
    WHERE STOKNO = A.STOKNO AND DEPO = 100 AND TARIH
    BETWEEN ‘2018-01-01’ AND ‘2018-04-06’) AS NUMERIC(10, 2))
    AS DEPOENVANTERI FROM F0101TBLSTOKLAR AS STK LEFT
    JOIN F0101D0001TBLDEPOENVANTER AS A ON STK.IND = A.STOKNO LEFT
    JOIN F0101TBLDEPOLAR AS TBLDEPOLAR ON TBLDEPOLAR.IND = A.DEPO LEFT
    JOIN F0101TBLBIRIMLEREX AS TBLBIRIMLEREX ON STK.BIRIMEX = TBLBIRIMLEREX.IND

    LEFT JOIN KTRSTOKTIP AS KTR ON STK.STOKTIPI = KTR.KOD Where STK.IND >= 100 AND
    STK.STOKTIPI IN (0,19) AND STK.STATUS = 1 AND
    (STK.MALINCINSI like ‘%%’ OR STOKKODU LIKE ‘%%’) AND 1 = 1GROUP BY TBLBIRIMLEREX.BARCODE,STK.IND,TBLBIRIMLEREX.STOKNO,TBLBIRIMLEREX.CARPAN,
    TBLBIRIMLEREX.BIRIMADI, STK.STOKKODU,STK.MALINCINSI, A.STOKNO, KTR.TIPACIKLAMA,
    TBLBIRIMLEREX.SATISFIYATI1,STK.KOD1, STK.KOD2, STK.KOD3,
    STK.KOD4, STK.KOD5, STK.KOD6, STK.KOD7, STK.KOD8, STK.KOD9, STK.KOD10

    1. Hata yine aynı 1’den fazla kayıt geldiği için patlıyor subquery’den tek kayıt gelecek şekilde sorguyu düzenleyin sorun düzelecektir.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir