Hola @Asanchez,
Tengo un query que hice hace algún tiempo y que te puede ayudar ya que devuelve los movimientos de entradas y salidas, pero no devuelve los costos, lo tienes que modificar según lo que necesitas.
@dataInicio datetime,
@dataFinal datetime,
@almacen text
as
with c as
(
select o.ItemCode, isnull(sum(coalesce(o.inqty,0))-sum(coalesce(o.OutQty,0)),0) as inventario
from oinm o
where o.Warehouse=convert(nvarchar,@almacen) and o.DocDate < dateadd(day,-1,@dataInicio)
group by o.ItemCode
)
select o.ItemCode,
o.Dscription,
coalesce(c.inventario,0) as inv_ini,
sum(coalesce(o.InQty,0)) as entradas,
sum(coalesce(o.OutQty,0)) as salidas,
i.Price,
f.WhsName
from oinm o left join itm1 i on o.ItemCode=i.ItemCode
left join c on c.ItemCode=o.ItemCode
join owhs f on o.Warehouse = f.WhsCode
where o.Warehouse=convert(nvarchar,@almacen) and convert(date,o.DocDate,112) between convert(date,@dataInicio,112) and convert(date,@dataFinal,112) and i.PriceList=1
group by o.ItemCode, o.Dscription, c.inventario, i.Price, f.WhsName
order by o.ItemCode
Saludos