Iislas, la consulta que pude yo fue sólo un ejemplo de cómo poder hacerlo, ya que al no tener la estructura de las tablas, ni datos de ejemplos no tengo la posibilidad de hacer una prueba real. Si observas creo una variable tipo tabla e inserto los valores que se supone regresaría la consulta, de esta manera pude hacer algunas pruebas.
La consulta que debería probar jahireffer sería más o menos la siguiente:
Código SQL:
Ver originalSELECT
E.DESCRIPCIO AS PRODUCTO,
CAST(
CASE WHEN LEN(B.PRODUCTO)=6 THEN (B.CANTIDAD)/ISNULL((SELECT MTMERCIA.UNIDADMED FROM MTMERCIA
WHERE MTMERCIA.CODIGO = CASE WHEN LEN(B.PRODUCTO)=6 THEN SUBSTRING(B.PRODUCTO,1,5) ELSE B.PRODUCTO END),'1') ELSE (B.CANTIDAD)
END
AS DECIMAL) AS CANTIDAD,
'PEDIDO' AS DESC_CANTIDAD
FROM MVTRADE B INNER JOIN TRADE C ON B.ORIGEN=C.ORIGEN AND B.TIPODCTO=C.TIPODCTO AND B.NRODCTO=C.NRODCTO
INNER JOIN MTMERCIA E ON B.PRODUCTO = E.CODIGO
WHERE B.TIPODCTO = 'PD'
UNION
SELECT
E.DESCRIPCIO AS PRODUCTO,
CAST(dbo.F_Saldo_Bodega_Informe(YEAR(GETDATE()),M ONTH(GETDATE()),B.PRODUCTO,'01','T','C') AS DECIMAL) AS CANTIDAD,
'BODEGA 1' AS DESC_CANTIDAD
FROM MVTRADE B INNER JOIN TRADE C ON B.ORIGEN=C.ORIGEN AND B.TIPODCTO=C.TIPODCTO AND B.NRODCTO=C.NRODCTO
INNER JOIN MTMERCIA E ON B.PRODUCTO = E.CODIGO
WHERE B.TIPODCTO = 'PD'
UNION
SELECT
E.DESCRIPCIO AS PRODUCTO,
CAST(dbo.F_Saldo_Bodega_Informe(YEAR(GETDATE()),M ONTH(GETDATE()),B.PRODUCTO,'69','T','C') AS DECIMAL) AS CANTIDAD
'BODEGA 2' AS DESC_CANTIDAD
FROM MVTRADE B INNER JOIN TRADE C ON B.ORIGEN=C.ORIGEN AND B.TIPODCTO=C.TIPODCTO AND B.NRODCTO=C.NRODCTO
INNER JOIN MTMERCIA E ON B.PRODUCTO = E.CODIGO
WHERE B.TIPODCTO = 'PD'
ORDER BY 1
Repito que no es la manera más óptima de hacer una consulta, pero es cuestión que jahireffer haga algunas pruebas y nos comente si funciona o no.
Saludos
Leo.