none
Enlazar dos tablas con campo en comun RRS feed

  • Pregunta

  • Saludos,

    Quisiera realizar la siguiente consulta;

    Tengo 2 tablas; TbSolicitado & TbInventario

    En la tabla TbSolicitado coloco la orden y necesito extraer la ubicacion que mas tenga inventario desde la tabla TbInventario siempre y cuando el item sea el mismo.

    En caso de que no encuentre uno de los Item en la tabla TbInventario pues que me arroje cero.

    Ejemplo;

    sábado, 13 de octubre de 2018 13:37

Respuestas

  • Hola DewinRD:

    Puedes hacer algo del estilo:

    CREATE TABLE tbSolicitado
    (contenedor VARCHAR(10),
     item       VARCHAR(10),
     solicitado INT
    );
    GO
    CREATE TABLE tbInventario
    (ubicacion  VARCHAR(10),
     item       VARCHAR(10),
     disponible INT
    );
    GO
    INSERT INTO tbSolicitado
    (contenedor,
     item,
     solicitado
    )
    VALUES
    ('a',
     'ahi015',
     737
    );
    GO
    INSERT INTO tbInventario
    (ubicacion,
     item,
     disponible
    )
    VALUES
    ('a01',
     'ahi015',
     737
    ),
    ('a02',
     'ahi015',
     21846
    ),
    ('a01',
     'ahi015',
     155
    );
    GO
    WITH cte
         AS (
         SELECT MAX(disponible) OVER(PARTITION BY item ORDER BY item) AS disponible,
                item
         FROM tbinventario)
         SELECT t.contenedor,
                t.item,
                t.solicitado,
                isnull(i.ubicacion, 'no disponible'),
                isnull(MAX(c.disponible), 0) AS disponible
         FROM tbsolicitado t
              LEFT JOIN cte c ON t.item = c.item
              INNER JOIN tbinventario i ON c.item = i.item
                                           AND c.disponible = i.disponible
         GROUP BY t.contenedor,
                  t.item,
                  t.solicitado,
                  i.ubicacion;

    Salida

    • Marcado como respuesta DewinRD sábado, 13 de octubre de 2018 14:42
    sábado, 13 de octubre de 2018 14:11