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
