none
Como crear condicionales en SQL Server 2014 RRS feed

  • Pregunta

  • Estimados buenas tardes, tengo una consulta sobre como poner una condicional en donde si la columna Adicional_4 es 103 y 101, entonces en la columna Adicional_5 será 10, luego si Adicional_4 es 1 entonces Adicional_5 será 1.

    Pongo un caso para mejor detalle de la pregunta.

    ADICIONAL_4 ADICIONAL_5
    1 1
    1 1
    101 10
    103 10
    1 1

    Saludos.

    lunes, 10 de septiembre de 2018 20:46

Todas las respuestas

  • Hola Cesar RN:

    Los condicionales en SQL Server se hacen con case:

    Select Adicional_4 as adicional4, 
    /*Utilizas case when (expresión) then resultado */
    case 
    when Adicional_4 = 101 then 10
    when Adicional_4 = 103 then 10
    /* y si no se ha cumplido ninguna entonces */
    else 1 end as Adicional5 
    
    from tutabla;
    /* también podría ser un adicional4 between 101 and 103
    o mayor que o cualquier tipo de expresión */
    

    Existe también la función IIF

    Pero case es mucho más versátil

    Un saludo

    lunes, 10 de septiembre de 2018 21:01
  • Gracias Javi, y si el caso fuera que tengo que hacer un update a la columna ADICIONAL_5, como seria el caso

    Saludos.

    martes, 11 de septiembre de 2018 16:03
  • Gracias Javi, con tu query pude hacer un update de la siguiente manera.

    update Carga_BA setADICIONAL_5=10 whereADICIONAL_4 =101 or(ADICIONAL_4 =103)


    update Carga_BA setADICIONAL_5=1 whereADICIONAL_4=1

    martes, 11 de septiembre de 2018 16:29
  • Hola Cesar RN:

    Puedes hacerlo en una sola update.

    UPDATE a
      SET
          a.adicional_5 = CASE adicional_4
                              WHEN 101
    							THEN 10
                              WHEN 103
    							THEN 10
                              WHEN 1
    							THEN 1
    							 /*puedes poner un else*/
                          END
    FROM cargaBa a;
    
    

    Un saludo

    martes, 11 de septiembre de 2018 17:24
  • gracias Javi

    Saludos

    martes, 11 de septiembre de 2018 19:49