none
sql case içnde where kullanmak RRS feed

  • Soru

  • merhaba c# tarafından tablonun bir kolonuna değer göndermem lazım

    GECERLI = 1 aktif olanlar

    GECERLI = 0 aktif olmayanlar

    GECERLI = NULL gönderirsem her ikisinide dökmesi gerekiyor case içine girdim ancak her ikisini döktürmem için in kullanmam lazım nasıl yapıcagımı bulamadım bu şekilde denedim ama GECERLI= olduğundan in kabul etmiyor

     PROCEDURE SP_GET_EKSPERTIZ_ICERIK_ARSAID (ARSA_ID IN VARCHAR2,GECERLI IN VARCHAR2, CUR_EKSPERTIZ_ICERIK OUT SYS_REFCURSOR) AS
      BEGIN
        OPEN CUR_EKSPERTIZ_ICERIK FOR
        SELECT DISTINCT  ICERIK.*,ARSA.*
        FROM T_TEM_EKSPERTIZ_ICERIK ICERIK    
         left outer join T_TEM_ARSA ARSA on ICERIK.GAYRIMENKUL_ID = ARSA.ARSA_ID 
         
         WHERE  ICERIK.GECERLI =
         CASE  
              WHEN SP_GET_EKSPERTIZ_ICERIK_ARSAID.GECERLI='1'   THEN '1' ELSE '0'      
              WHEN SP_GET_EKSPERTIZ_ICERIK_ARSAID.GECERLI=is null THEN ICERIK.GECERLI IN('1','0')
              END
              AND ICERIK.GAYRIMENKUL_TURU='741285C1-441C-419B-9982-B3B0D554F367'
              AND ICERIK.GAYRIMENKUL_ID IN
                 (SELECT *
                    FROM TABLE(FN_SPLIT(SP_GET_EKSPERTIZ_ICERIK_ARSAID.ARSA_ID, ',')));
      END SP_GET_EKSPERTIZ_ICERIK_ARSAID;

    23 Ağustos 2013 Cuma 10:49

Yanıtlar

  • sorunu şu şekilde çözdüm birinin işine yarayabilir

    PROCEDURE SP_GET_EKSPERTIZ_ICERIK_ARSAID (ARSA_ID IN VARCHAR2,DURUMU IN VARCHAR2, CUR_EKSPERTIZ_ICERIK OUT SYS_REFCURSOR) as 
      
      BEGIN
     
        OPEN CUR_EKSPERTIZ_ICERIK FOR
       
        SELECT DISTINCT  ICERIK.*,ARSA.*  
        FROM T_TEM_EKSPERTIZ_ICERIK ICERIK    
         left outer join T_TEM_ARSA ARSA on ICERIK.GAYRIMENKUL_ID = ARSA.ARSA_ID   
       WHERE
    ((SP_GET_EKSPERTIZ_ICERIK_ARSAID.DURUMU is null and ICERIK.GECERLI in ('1','0'))
    or (SP_GET_EKSPERTIZ_ICERIK_ARSAID.DURUMU = '0' and ICERIK.GECERLI = '0') 
     or (SP_GET_EKSPERTIZ_ICERIK_ARSAID.DURUMU = '1' and ICERIK.GECERLI = '1'))
        AND ICERIK.GAYRIMENKUL_TURU='741285C1-441C-419B-9982-B3B0D554F367'
              AND ICERIK.GAYRIMENKUL_ID IN
                 (SELECT *
                    FROM TABLE(FN_SPLIT(SP_GET_EKSPERTIZ_ICERIK_ARSAID.ARSA_ID, ',')));
       
           
      END SP_GET_EKSPERTIZ_ICERIK_ARSAID;

    • Yanıt Olarak İşaretleyen mustafa3434 27 Ağustos 2013 Salı 09:00
    27 Ağustos 2013 Salı 08:52

Tüm Yanıtlar

  • Merhaba Emin,

    Aşağıdaki gibi bir kod işini görebilir mi?

      declare @val smallint
      set @val = 1
      set @val = 0
      set @val = null
      select * 
      from casetable
      where
    	@val is null or
    	val =
    	   case when @val = 1 then 1
    		  when @val = 0 then 0
    		end
    
    NULL koşulu için ayrı bir ifade var ve diğer koşulları kontrol ettiğimiz CASE bölümüne OR ile bağlı


    SQL Server, SQL Server 2012 Denali and T-SQL Tutorials

    23 Ağustos 2013 Cuma 12:13
  • alper teşekkürler ancak null değer geldiğinde

    where val=null olarak bir döküm alamıycağım için bu şekilde çalışmıyacaktır

    23 Ağustos 2013 Cuma 20:33
  • konu güncel
    26 Ağustos 2013 Pazartesi 10:23
  • sorunu şu şekilde çözdüm birinin işine yarayabilir

    PROCEDURE SP_GET_EKSPERTIZ_ICERIK_ARSAID (ARSA_ID IN VARCHAR2,DURUMU IN VARCHAR2, CUR_EKSPERTIZ_ICERIK OUT SYS_REFCURSOR) as 
      
      BEGIN
     
        OPEN CUR_EKSPERTIZ_ICERIK FOR
       
        SELECT DISTINCT  ICERIK.*,ARSA.*  
        FROM T_TEM_EKSPERTIZ_ICERIK ICERIK    
         left outer join T_TEM_ARSA ARSA on ICERIK.GAYRIMENKUL_ID = ARSA.ARSA_ID   
       WHERE
    ((SP_GET_EKSPERTIZ_ICERIK_ARSAID.DURUMU is null and ICERIK.GECERLI in ('1','0'))
    or (SP_GET_EKSPERTIZ_ICERIK_ARSAID.DURUMU = '0' and ICERIK.GECERLI = '0') 
     or (SP_GET_EKSPERTIZ_ICERIK_ARSAID.DURUMU = '1' and ICERIK.GECERLI = '1'))
        AND ICERIK.GAYRIMENKUL_TURU='741285C1-441C-419B-9982-B3B0D554F367'
              AND ICERIK.GAYRIMENKUL_ID IN
                 (SELECT *
                    FROM TABLE(FN_SPLIT(SP_GET_EKSPERTIZ_ICERIK_ARSAID.ARSA_ID, ',')));
       
           
      END SP_GET_EKSPERTIZ_ICERIK_ARSAID;

    • Yanıt Olarak İşaretleyen mustafa3434 27 Ağustos 2013 Salı 09:00
    27 Ağustos 2013 Salı 08:52