none
REGISTRO CON FECHA MAS RECIENTE RRS feed

  • Pregunta

  • Buenas tardes,

    Me pueden apoyar con los siguiente: ¿Como de la siguiente consulta puedo obtener el registro mas reciente de cada razon social?

    SELECT dbo.admDocumentos.CRAZONSOCIAL, CCODIGOAGENTE, CFECHA
    FROM dbo.admDocumentos
    FULL OUTER JOIN dbo.admAgentes ON dbo.admDocumentos.CIDAGENTE = dbo.admAgentes.CIDAGENTE
    WHERE CRAZONSOCIAL <>''
    ORDER BY CRAZONSOCIAL

    De antemano muchas gracias.

    Saludos.

    martes, 19 de mayo de 2020 20:52

Todas las respuestas

  • Hola Eduardo060888, 

      

    Gracias por levantar tu consulta en los foros de MSDN. Entendimos su pregunta y vamos a darle seguimiento para buscar la mejor repuesta pertinente al caso.  

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN.   

     

     Andres Aguilar

     ____________________________ 

      

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    martes, 19 de mayo de 2020 23:04
    Moderador
  • Hola  Eduardo060888,


    Gracias por levantar tu consulta en los foros de MSDN.

    Puedes utilizar MAX() para el datetime y obtener el registo mas reciente y ordenarlo así.

    MAX() date value

    MAX() ejemplos


    Gracias por usar los foros de MSDN. 

      

    Andres Aguilar 

     ____________________________ 

      

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    martes, 19 de mayo de 2020 23:49
    Moderador
  • Hola Eduardo060888, 

      

    ¿Alguna novedad sobre la consulta realizada? ¿Han sido útiles las  respuestas proporcionadas?  

    Espero su respuesta.  

    Cualquier duda referente a productos Microsoft, puedes consultarnos. Es un gusto informarte. 

    Gracias por usar los foros de MSDN.  

    Andres Aguilar 

    ____________________________  

     

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.  

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.   

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft. 

    jueves, 21 de mayo de 2020 13:13
    Moderador
  • Hola Eduardo060888:

    Una de las posibilidades que tienes es utilizar el operador apply:

    DECLARE @TABLE TABLE (crazonsocial varchar(100), cCodigoAgente int, cFecha datetime)
    INSERT INTO @TABLE (crazonsocial, cCodigoAgente, cFecha)
    VALUES
    ('AFL TEL' ,NULL,'20200311'),
    ('AFL TEL' ,400, '20200311'),
    ('AFL TEL' ,500, '20200311'),
    ('AFL TEL' ,520, '20200519'),
    ('ALENCO'  ,111, '20200323'),
    ('ALENCO'  ,111, '20200406'),
    ('AMERICAN',121, '20200401'),
    ('AMERICAN',131, '20200330'),
    ('AMERICAN',NULL,'20200415'),
    ('AMERICAN',520, '20200205'),
    ('AMERICAN',520, '20200211');
    
    SELECT t.*, maxFecha.cFecha
    FROM @TABLE
    T CROSS APPLY 
    (SELECT TOP(1) cFecha 
    from @TABLE m
    where m.crazonsocial = t.crazonsocial
    order by cFecha desc
    ) as maxFecha

    Yo he utilizado una variable tipo tabla, para introducir tus datos. 

    Y aplico el operador apply sobre la misma variable, obteniendo el top(1), por tanto un registro de la fecha order by fecha desc, por tanto el mas moderno, de todos los registros de table, que he fijado en el interior de la tabla derivada maxFecha, como m y en el where lo igualo al conjunto exterior que he llamado t.

    Por tanto con todos los datos, que tienes de tu query, además puedes obtener la última fecha.

    SELECT dbo.admDocumentos.CRAZONSOCIAL, CCODIGOAGENTE, CFECHA, maxFecha.FECHA AS MaximaFecha
    FROM dbo.admDocumentos
    FULL OUTER JOIN dbo.admAgentes ON dbo.admDocumentos.CIDAGENTE = dbo.admAgentes.CIDAGENTE
    CROSS APPLY (
    	SELECT TOP(1) CFECHA
    	FROM dbo.admDocumentos a 
    	WHERE a.CRAZONSOCIAL = dbo.admDocumentos.CrazonSocial
    	ORDER BY cFecha DEsc
    	) as maxFecha
    WHERE CRAZONSOCIAL <>''
    ORDER BY CRAZONSOCIAL

    jueves, 21 de mayo de 2020 14:34