none
Como arreglaria mi consulta para obtener registros no existentes RRS feed

  • Pregunta

  • Hola:

    Tengo esta consulta:

    SELECT a.Cod_Usuario, a.Cod_prestamo,
    SUM(CASE WHEN DATEDIFF (day, fp.Fecha_Pago, Fecha_Efectiva)
    between 1 and 30 THEN mont ELSE 0 END) as 'trenta_dias',
    SUM(CASE WHEN DATEDIFF (day, fp.Fecha_Pago, Fecha_Efectiva)
    between 31 and 60 THEN mont ELSE 0 END) as 'sesenta_dias',
    SUM(CASE WHEN DATEDIFF (day, fp.Fecha_Pago, Fecha_Efectiva)
    between 61 and 90 THEN mont ELSE 0 END) as 'noventa_dias',
    SUM(CASE WHEN DATEDIFF (day, fp.Fecha_Pago, Fecha_Efectiva) > 90
    THEN mont ELSE 0 END) as 'excoberturados' FROM ArchivoPS a join ArchivoSocias s
    on s.Cod_Usuario = a.Cod_Usuario and s.Cod_prestamo = a.Cod_prestamo join Fechas_Pago fp
    on a.Cod_prestamo = fp.Cod_prestamo and a.Nro_Cuota = fp.Nro_Cuota WHERE 1 = 1
    and fp.Fecha_Pago between '20140601' and '20140630' and DATEDIFF (day, fp.Fecha_Pago,
    a.Fecha_Efectiva) > 0 and Fecha_Efectiva <= '20140630' and s.Cod_Regional = '0100'
    GROUP BY a.Cod_Usuario,a.Cod_prestamo

    el caso es que me muestra todos los que pagaron Fecha_Efectiva (Tabla: ArchivosPS) segun lo definido en el Campo Fecha_Pago (Tabla Fechas_Pago), pero lo que me piden es que se muestre a todos los que no pagaron a la ultima fecha (que se encuentra en between), se me ocurre hacer una sub consulta pero sin resultado, sera que me pueden ayudar por favor?


    • Editado Wilmer30 viernes, 8 de agosto de 2014 16:28
    • Cambiado Enrique M. Montejo lunes, 11 de agosto de 2014 11:30 Pregunta relacionada con el acceso a datos.
    viernes, 8 de agosto de 2014 16:25

Todas las respuestas

  • Hola:

    Para este tipo de casos que necesitas saber los valores contrarios a los que sacas e tu Query, hace un left Join entre todos los registros contra los que te devuelve tu consulta y en el where utilizas

    T.campo IS NULL para que saque todos los que no estén en tu consulta de resultados.

    Saludos


    JM Claudio Dba/Consultor SQL/BI Pasiona - Spain

    sábado, 29 de noviembre de 2014 9:26
  • Hola:

     Podrias intentar poniendo un NOT antes del BETWEEN

    and fp.Fecha_Pago NOT between '20140601' and '20140630' and DATEDIFF (day, fp.Fecha_Pago,


    Saludos desde Monterrey, Nuevo León, México!!!

    sábado, 29 de noviembre de 2014 14:50