Código SQL:
El cual me arroja lo siguiente:Ver original
SELECT L.NOMBRE ,CAST(ISNULL((SELECT SUM(CANTORIG) FROM MVTRADE WHERE PRODUCTO = M.CODIGO AND ORIGEN= 'COM' AND TIPODCTO = 'OR' GROUP BY PRODUCTO),0) AS DECIMAL)OC_CANTIDAD ,CAST(ISNULL((SELECT SUM(VALORUNIT) FROM MVTRADE WHERE PRODUCTO = M.CODIGO AND ORIGEN= 'COM' AND TIPODCTO = 'OR' GROUP BY PRODUCTO),0) AS DECIMAL)OC_EN_$ ,CAST(ISNULL((SELECT SUM(CANTORIG) FROM MVTRADE WHERE PRODUCTO = M.CODIGO AND ORIGEN= 'COM' AND TIPODCTO = 'FP' GROUP BY PRODUCTO),0) AS DECIMAL)EJECUTANDO_CANTIDAD ,CAST(ISNULL((SELECT SUM(VALORUNIT) FROM MVTRADE WHERE PRODUCTO = M.CODIGO AND ORIGEN= 'COM' AND TIPODCTO = 'FP' GROUP BY PRODUCTO),0) AS DECIMAL)EJECUTANDO_$ FROM MTMERCIA M INNER JOIN MTLINEA L ON M.CODLINEA = L.CODLINEA WHERE NOMBRE='CINTAS' AND M.CODLINEA LIKE 'ME%'
Código SQL:
La idea es que me totalice mostrando solo un registro en este caso 'CITAS' con el respectiva total de sus demas campos, la idea mas logica seria agrupar pero al hacerlo tambien me pide agrupar por el campo 'M.CODIGO' debido a que lo llamo en lo utilizo para filtar en las subconsultas, pero no puedo agrupar por 'M.CODIGO'porque cada CITA que aparece en el registro es de un codigo diferente por lo que me arrojaria los mismos registros repetidos, pense en esto:Ver original
NOMBRE OC_CANTIDAD OC_EN_$ EJECUTANDO EJECUTANDO_$ CINTAS 162000 108 162000 197 CINTAS 48520 68 34120 57 CINTAS 108800 174 98500 238
Código SQL:
4 consultas las cuales me arrojan esto respectivamente: Ver original
--CONSULTA 1 SELECT L.NOMBRE,CAST(SUM(CANTORIG)AS DECIMAL) OC_CANTIDAD FROM MVTRADE INNER JOIN MTMERCIA M ON PRODUCTO = M.CODIGO INNER JOIN MTLINEA L ON M.CODLINEA = L.CODLINEA WHERE PRODUCTO = M.CODIGO AND ORIGEN= 'COM' AND TIPODCTO = 'OR' GROUP BY L.NOMBRE; --CONSULTA 2 SELECT L.NOMBRE,CAST(SUM(VALORUNIT)AS DECIMAL) OC_EN_$ FROM MVTRADE INNER JOIN MTMERCIA M ON PRODUCTO = M.CODIGO INNER JOIN MTLINEA L ON M.CODLINEA = L.CODLINEA WHERE PRODUCTO = M.CODIGO AND ORIGEN= 'COM' AND TIPODCTO = 'OR' GROUP BY L.NOMBRE; --CONSULTA 3 SELECT L.NOMBRE,CAST(SUM(CANTORIG)AS DECIMAL) EJECUTANDO_CANTIDAD FROM MVTRADE INNER JOIN MTMERCIA M ON PRODUCTO = M.CODIGO INNER JOIN MTLINEA L ON M.CODLINEA = L.CODLINEA WHERE PRODUCTO = M.CODIGO AND ORIGEN= 'COM' AND TIPODCTO = 'FP' GROUP BY L.NOMBRE; --CONSULTA 4 SELECT L.NOMBRE,CAST(SUM(VALORUNIT)AS DECIMAL) EJECUTANDO_$ FROM MVTRADE INNER JOIN MTMERCIA M ON PRODUCTO = M.CODIGO INNER JOIN MTLINEA L ON M.CODLINEA = L.CODLINEA WHERE PRODUCTO = M.CODIGO AND ORIGEN= 'COM' AND TIPODCTO = 'FP' GROUP BY L.NOMBRE ORDER BY NOMBRE;
Código SQL:
Ver original
---CONSULTA 1 NOMBRE OC_CANTIDAD ACCESORIOS EXTERNOS 108675 AMPOLLAS 23784 ANGEOS 5000 BOLSAS CONSUMIBLES 50000 BOLSAS PRODUCTO TERMINADO 396830 CINTAS 2423490 ---CONSULTA 2 NOMBRE OC_EN_$ ACCESORIOS EXTERNOS 811301 AMPOLLAS 0 ANGEOS 11458 BOLSAS CONSUMIBLES 13 BOLSAS PRODUCTO TERMINADO 5846 CINTAS 725 ---CONSULTA 3 NOMBRE EJECUTANDO_CANTIDAD ACCESORIOS EXTERNOS 269346 AMPOLLAS 23784 ANGEOS 4500 BOLSAS CONSUMIBLES 50000 BOLSAS PRODUCTO TERMINADO 409330 CINTAS 1892290 ---CONSULTA 4 NOMBRE EJECUTANDO_$ ACCESORIOS EXTERNOS 816946 AMPOLLAS 0 ANGEOS 8993 BOLSAS CONSUMIBLES 13 BOLSAS PRODUCTO TERMINADO 8312 CINTAS 801
Como pueden ver el el primer campo de las 4 consultas los registros son los mismos mientras que los otros campos son diferentes en cada consulta, la idea es que me quede asi:
Código SQL:
Ver original
NOMBRE OC_CANTIDAD OC_EN_$ ACCESORIOS EXTERNOS 811301 108675 AMPOLLAS 0 23784 ANGEOS 11458 5000 BOLSAS CONSUMIBLES 13 50000 BOLSAS PRODUCTO TERMINADO 5846 396830 CINTAS 725 2423490
Claro mas los otros dos campos de las dos ultimas consulta (EJECUTANDO_CANTIDAD y EJECUTANDO_$) se que prodria usar la funcion 'pivot', pero no tengo idea de como se maneja, yo prefiero usar 'case', pero tampoco logro con lo deseado..... porfavor si alguien me puede ayudar lo agradeceria fulllll.....