none
Como hacer una condición en SQL RRS feed

  • Pregunta

  • Hola, buen día, 

    Necesito de su ayuda para hacer una condición en SQL ya que tengo dudas para realizarla se escucha fácil para hacerla pero aun no se mucho y requiero de su apoyo.

    INSERT INTO RecHum_Web.dbo.rh_Mov_Nomina( 
    cla_empresa, cla_trab, cla_perded, monto, fecha_aplica, 
            cla_centro_costo, cla_ubicacion, cla_puesto, cla_tab_sue, 
            niv_tab_sue, tipo_mov, cla_depto, monto_tope, acum, fecha_ult_cambio, cla_puesto_pag, CLA_TURNO) 
    SELECT 
    Empresa = rs.cve_emp, Trabajador = rs.cve_trab, 
            cla_perded = 106, Neto - subsidio, Fecha_aplica = rs.fecha, 
            rh.cla_centro_costo, rh.cla_ubicacion_base, rh.cla_puesto, rh.cla_tab_sue, rh.niv_tab_sue, 
            Tipo_mov = 2, rh.cla_depto, rs.neto - rs.subsidio, 0, Cast(GetDate() As SmallDatetime), 
            rh.cla_puesto, IsNull(rh.CLA_TURNO, 0)
    FROM dbo.cmrRegistroServicio rs 
    JOIN RecHum_Web.dbo.rh_trab rh
    ON rs.cve_trab = rh.cla_trab 
    WHERE (rs.cve_ter = @Terminal)
    AND Cast(Fecha As Date) >= @FechaDesde 
    AND Cast(Fecha As Date) <= @FechaHasta 
            AND IsNull(rs.Transmitido, 0) = 0 
     
    UPDATE dbo.cmrRegistroServicio 
    SET Transmitido = 1, 
    FechaTransmitido = GetDate() 
    WHERE (cve_ter = @Terminal) 
    AND Cast(Fecha As Date) >= @FechaDesde 
    AND Cast(Fecha As Date) <= @FechaHasta
    AND IsNull(Transmitido, 0) = 0

    COMMIT TRANSACTION

    SELECT 0 as Error, 'Los registros del Comedor se enviaron correctamente a Fortia.' as Mensaje
    END

    Este es mi Query en donde cla_perded = 106 pertenece a una empresa

    Pero necesito agregar tambien cla_perded = 110 ya que cuando yo registro a una persona me aparece con registro de 106 y no con el 110

    en resumen debo de registrar con cla_perded = 106 y 110 pero no se como iniciar la condición me pueden orientar por favor.

    Muchas gracias.

    Saludos.

     


    Molitaa

    martes, 22 de noviembre de 2016 14:52

Respuestas

  • En el selec, no tenes forma de saber si es un 106 o un 110? lo tenes hardcode al valor 106? de ser asi tenes algo mal en el diseño de las tablas

    Carlos Ignacio Aguero. DBA SQL Server. Toda mi respeto al pueblo Peruano por la ayuda prestada en la guerra de Malvinas.

    • Marcado como respuesta molitaa martes, 22 de noviembre de 2016 18:23
    martes, 22 de noviembre de 2016 16:05
  • molitaa,

    ¿Entonces porque no recuperas el valor de dicha columna?

    SELECT 
        rs.cve_emp, rs.cve_trab, rh.cla_perded, Neto - subsidio, 


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta molitaa martes, 22 de noviembre de 2016 18:22
    martes, 22 de noviembre de 2016 16:11

Todas las respuestas

  • Amigo

    En que tabla y columnas guardas los datos para determinar si lo que estas cargando es una empresa o persona?


    Carlos Ignacio Aguero. DBA SQL Server. Toda mi respeto al pueblo Peruano por la ayuda prestada en la guerra de Malvinas.

    martes, 22 de noviembre de 2016 15:07
  • gracias Carlos,

    en la Columna de cla_perded de la tabla rh_Mov_Nomina 


    Molitaa

    martes, 22 de noviembre de 2016 15:16
  • molitaa,

    Debes explicar bien lo que requieres, en lo personal no me queda del todo claro. 

    1. ¿Necesitas insertar dos filas en todos los casos (una con el valor 106 y otra con el valor 110)?
    2. ¿deseas insertar una fila según una condición? ¿que condición? Menciona tablas, columnas, relaciones que participan en la condición.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 22 de noviembre de 2016 15:45
  • Gracias Willams, quiero agregar en la tabla RecHum_Web.dbo.rh_Mov_Nomina en la columna cla_perded el valor 110

    si te fijas en mi select:

    SELECT Empresa = rs.cve_emp, Trabajador = rs.cve_trab,  cla_perded = 106, Neto - subsidio, Fecha_aplica= rs.fecha, rh.cla_centro_costo, rh.cla_ubicacion_base, rh.cla_puesto, rh.cla_tab_sue, rh.niv_tab_sue,  Tipo_mov = 2, rh.cla_depto, rs.neto - rs.subsidio, 0, Cast(GetDate() As SmallDatetime),  rh.cla_puesto, IsNull(rh.CLA_TURNO, 0)

    yo tengo definido mi  cla_perded = 106 por default entonces todos me los agrega con 106  yo quiero colocar una condición que me tome en cuenta los 110.

    no se si me explique mejor.

    si mi registro tiene valor cla_perded = 110 que me lo agregue con ese valor, si mi registro es cla_perded = 106 que me lo agregue con 106


    Molitaa

    martes, 22 de noviembre de 2016 15:51
  • molitaa,

    De acuerdo, entonces queda claro que no debes de colocar un valor constante sino el valor que contiene la columna 'cla_perded'.

    ¿La columna cla_perded en que tabla se encuentra? Leí en tu respuesta anterior que se encuentra en la misma tabla que insertas [rh_Mov_Nomina], pero entonces no tengo claro, ¿cómo obtienes el valor si recién insertas?

    martes, 22 de noviembre de 2016 16:01
  • el valor de cla_perded sale de la tabla RecHum_Web.dbo.rh_trab rh la relacion de:

    FROM dbo.cmrRegistroServicio rs 
    JOIN RecHum_Web.dbo.rh_trab rh
    ON rs.cve_trab = rh.cla_trab 

     y lo inserto en la tabla 

    RecHum_Web.dbo.rh_Mov_Nomina


    Molitaa

    martes, 22 de noviembre de 2016 16:04
  • En el selec, no tenes forma de saber si es un 106 o un 110? lo tenes hardcode al valor 106? de ser asi tenes algo mal en el diseño de las tablas

    Carlos Ignacio Aguero. DBA SQL Server. Toda mi respeto al pueblo Peruano por la ayuda prestada en la guerra de Malvinas.

    • Marcado como respuesta molitaa martes, 22 de noviembre de 2016 18:23
    martes, 22 de noviembre de 2016 16:05
  • molitaa,

    ¿Entonces porque no recuperas el valor de dicha columna?

    SELECT 
        rs.cve_emp, rs.cve_trab, rh.cla_perded, Neto - subsidio, 


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta molitaa martes, 22 de noviembre de 2016 18:22
    martes, 22 de noviembre de 2016 16:11
  • Muchas gracias por tu apoyo Willams,

    he colocado un Case ya que cla_perded venia de otra tabla, hasta que estuve revisando mas a fondo y haciendo la prueba me di cuenta, una disculpa por no darme cuenta antes, pero como me indicaste estaba bien siempre y cuando estuviera en la tabla que yo te había indicando.

    Muchas gracias por tu tiempo.

    Lindo Martes.

    Saludos.


    Molitaa

    martes, 22 de noviembre de 2016 17:43
  • gracias Carlos por tu tiempo en apoyarme he resuelto mi detalle la verdad es que no se mucho de sql, estoy en mis inicios y cualquier comentario que me indican me es muy útil.

    Tu pregunta me ayudo a seguir buscando en las tablas si vi la forma de ver si era 106 o 110 y por eso utilice un case.

    Que tengas lindo Martes.

    Saludos.


    Molitaa

    martes, 22 de noviembre de 2016 17:47
  • De nada Amigo,

    Marca las respuesta como correcta asi nos sirve a todos.

    Saludos!


    Carlos Ignacio Aguero. DBA SQL Server. Toda mi respeto al pueblo Peruano por la ayuda prestada en la guerra de Malvinas.

    martes, 22 de noviembre de 2016 18:16