none
Mostrar fila Anterior a partir de un código único de una tabla RRS feed

  • Pregunta

  • Buenos Dias estimados.

    Regreso a este post para solicitar una ayuda.

    Estoy trabajando con SQL SERVER 2014 y quiero mostrar valores de la fila anterior de una tabla con parametro el codigo unico de la taba tengo estos codigo:

    select c.intCodCompra as 'Unico',c.intKilomInsumo as 'kilometraje Actual' from tblCompra c
    inner join tblDetalleCompra dt on c.intCodCompra = dt.intCodCompra
    inner join tlkpInsumos ins on dt.intCodInsumo = ins.intCodInsumo
    inner join tblVehiculo v on c.intCodVehiculo = v.intCodVehiculo
    where ins.intCodInsumo = 2 and v.strPlaca = 'me1332'
    order by c.dtmFechaOrden

    select c.intCodCompra as 'Unico',lag(c.intKilomInsumo,1) over(order by c.dtmFechaOrden) as 'kilometraje Anterior' from tblCompra c
    inner join tblDetalleCompra dt on c.intCodCompra = dt.intCodCompra
    inner join tlkpInsumos ins on dt.intCodInsumo = ins.intCodInsumo
    inner join tblVehiculo v on c.intCodVehiculo = v.intCodVehiculo
    where ins.intCodInsumo = 2 and v.strPlaca = 'me1332' and c.intCodCompra = 33

    me muestra el resultado de la imagen que le compartí, 

    PERO LO QUE QUIERO ES QUE APARTIR DEL CODIGO UNICO "33" ME MUESTRE EL KILOMETRAJE ANTERIOR POR EJEMPLO EL KILOMETRAJE DEL CODIGO UNICO "20"

    DE ANTE MANO MUCHAS GRACIAS POR EL APOYO.

    jueves, 15 de febrero de 2018 15:58

Respuestas

  • Trata:

    SELECT *
    FROM (
    SELECT
        c.intCodCompra AS Unico,
        c.intKilomInsumo AS [kilometraje Actual],
        lag(c.intKilomInsumo,1) over(order by c.dtmFechaOrden) as [kilometraje Anterior]
    FROM
        tblCompra AS c
        INNER JOIN
        tblDetalleCompra AS dt
        ON c.intCodCompra = dt.intCodCompra
        INNER JOIN
        tlkpInsumos AS ins
        ON dt.intCodInsumo = ins.intCodInsumo
        INNER JOIN
        tblVehiculo AS v
        ON c.intCodVehiculo = v.intCodVehiculo
    WHERE
        ins.intCodInsumo = 2
        AND v.strPlaca = 'me1332'
    ) AS T
    WHERE
    	intCodCompra = 33
    ORDER BY
        c.dtmFechaOrden;

    Tambien puedes usar esta version pero pierdes informacion sobre el 33.

    SELECT TOP (1)
        33 AS intCodCompra,
        c.intCodCompra AS Unico_anterior,
        c.intKilomInsumo as [kilometraje Anterior]
    FROM
        tblCompra AS c
        INNER JOIN
        tblDetalleCompra AS dt
        ON c.intCodCompra = dt.intCodCompra
        INNER JOIN
        tlkpInsumos AS ins
        ON dt.intCodInsumo = ins.intCodInsumo
        INNER JOIN
        tblVehiculo AS v
        ON c.intCodVehiculo = v.intCodVehiculo
    WHERE
        ins.intCodInsumo = 2
        AND v.strPlaca = 'me1332'
    	AND c.intCodCompra < 33
    ORDER BY
        c.dtmFechaOrden DESC, intCodCompra;


    AMB

    Some guidelines for posting questions...

    AYÚDANOS A AYUDARTE, guía básica de consejos para formular preguntas



    jueves, 15 de febrero de 2018 17:06

Todas las respuestas