1. Consulta mensual:
Código SQL:
Ver original
SELECT vtas.periodo, vtas.clave_linea, vtas.clave_marca, vtas.clave_grupo, vtas.clave_presentacion, vtas.cant_piezas_mes, vtas.cant_litros_mes, vtas.imp_mxp_mes, vtas.fecha_actualizacion FROM (SELECT '201103' AS periodo, COALESCE(marcas_agrupadas.linea_ini,sku.clave_linea) clave_linea, COALESCE(marcas_agrupadas.marca_ini,sku.clave_marca) clave_marca, COALESCE(marcas_agrupadas.grupo_ini,sku.clave_grupo) clave_grupo, sku.clave_presentacion, SUM(vtas.ventas_piezas) AS cant_piezas_mes, SUM(vtas.ventas_litros) cant_litros_mes, SUM(vtas.ventas_mxp) imp_mxp_mes, getdate() AS fecha_actualizacion FROM RENT_TEMP_VENTAS vtas, (SELECT sku.CLAVE_SKU, COALESCE(excep.clave_linea_nvo,sku.CLAVE_LINEA) AS clave_linea, COALESCE(excep.clave_marca_nvo,sku.CLAVE_MARCA) AS clave_marca, COALESCE(excep.clave_grupo_nvo,sku.CLAVE_GRUPO) AS clave_grupo, COALESCE(excep.clave_presentacion_nvo, sku.CLAVE_PRESENTACION) AS clave_presentacion FROM DIM_SKU_HIST sku LEFT OUTER JOIN cat_excepciones_ventas excep ON sku.clave_linea =excep.clave_linea_ant AND sku.clave_marca =excep.clave_marca_ant AND sku.clave_grupo=excep.clave_grupo_ant AND sku.clave_presentacion =excep.clave_presentacion_ant WHERE sku.PERIODO = '201103' AND sku.clave_sku LIKE '19A%') sku LEFT OUTER JOIN (SELECT inicia.clave_linea AS linea_ini, inicia.clave_marca AS marca_ini, inicia.clave_grupo AS grupo_ini ,agrupa.clave_linea, agrupa.clave_marca, agrupa.clave_grupo FROM cat_marcas_iniciales inicia, cat_marcas_agrupadas agrupa WHERE inicia.main_id = agrupa.main_id) marcas_agrupadas ON sku.clave_linea = marcas_agrupadas.clave_linea AND sku.clave_marca = marcas_agrupadas.clave_marca AND sku.clave_grupo = marcas_agrupadas.clave_grupo, rent_control_procesos ctrl WHERE vtas.fecha >= (SELECT MIN(fecha) FROM dim_tiempo WHERE anio='2011') AND vtas.fecha <= (SELECT MAX(fecha) FROM dim_tiempo WHERE mes = '201103') AND vtas.clave_sku = sku.clave_sku AND ctrl.proceso ='VENTAS_RFU_GRUPO' AND ctrl.tipo_carga = 'SQL' AND ACTIVO=1 AND COALESCE(marcas_agrupadas.grupo_ini,sku.clave_grupo) <>'99' AND COALESCE(marcas_agrupadas.linea_ini,sku.clave_linea)='01' AND COALESCE(marcas_agrupadas.marca_ini,sku.clave_marca)='002' AND COALESCE(marcas_agrupadas.grupo_ini,sku.clave_grupo)='00' AND sku.clave_presentacion = '01' GROUP BY COALESCE(marcas_agrupadas.linea_ini,sku.clave_linea), COALESCE(marcas_agrupadas.marca_ini,sku.clave_marca), COALESCE(marcas_agrupadas.grupo_ini ,sku.clave_grupo), sku.clave_presentacion) vtas WHERE vtas.clave_linea+vtas.clave_marca+vtas.clave_grupo+vtas.clave_presentacion IN (SELECT clave_linea+clave_marca+clave_grupo+clave_presentacion FROM h_lista_precios_grupo WHERE periodo ='201103' AND clave_lista_precios NOT LIKE 'LP%')
2.Consulta del acumulado de enero a marzo:
Código SQL:
Ver original
SELECT vtas2.cant_piezas_acum, vtas2.cant_litros_acum, vtas2.imp_mxp_acum FROM (SELECT '201103' AS periodo, COALESCE(marcas_agrupadas1.linea_ini,sku1.clave_linea) clave_linea, COALESCE(marcas_agrupadas1.marca_ini,sku1.clave_marca) clave_marca, COALESCE(marcas_agrupadas1.grupo_ini,sku1.clave_grupo) clave_grupo, sku1.clave_presentacion, SUM(vtas1.ventas_piezas) AS cant_piezas_acum, SUM(vtas1.ventas_litros) cant_litros_acum, SUM(vtas1.ventas_mxp) imp_mxp_acum, getdate() AS fecha_actualizacion FROM RENT_TEMP_VENTAS vtas1, (SELECT sku1.CLAVE_SKU, COALESCE(excep1.clave_linea_nvo,sku1.CLAVE_LINEA) AS clave_linea, COALESCE(excep1.clave_marca_nvo,sku1.CLAVE_MARCA) AS clave_marca, COALESCE(excep1.clave_grupo_nvo,sku1.CLAVE_GRUPO) AS clave_grupo, COALESCE(excep1.clave_presentacion_nvo, sku1.CLAVE_PRESENTACION) AS clave_presentacion FROM DIM_SKU_HIST sku1 LEFT OUTER JOIN cat_excepciones_ventas excep1 ON sku1.clave_linea =excep1.clave_linea_ant AND sku1.clave_marca =excep1.clave_marca_ant AND sku1.clave_grupo=excep1.clave_grupo_ant AND sku1.clave_presentacion =excep1.clave_presentacion_ant WHERE sku1.clave_sku LIKE '19A%' AND sku1.PERIODO BETWEEN '201101' AND '201103') sku1 LEFT OUTER JOIN (SELECT inicia1.clave_linea AS linea_ini, inicia1.clave_marca AS marca_ini, inicia1.clave_grupo AS grupo_ini ,agrupa1.clave_linea, agrupa1.clave_marca, agrupa1.clave_grupo FROM cat_marcas_iniciales inicia1, cat_marcas_agrupadas agrupa1 WHERE inicia1.main_id = agrupa1.main_id) marcas_agrupadas1 ON sku1.clave_linea = marcas_agrupadas1.clave_linea AND sku1.clave_marca = marcas_agrupadas1.clave_marca AND sku1.clave_grupo = marcas_agrupadas1.clave_grupo, rent_control_procesos ctrl1 WHERE vtas1.fecha >= (SELECT MIN(fecha) FROM dim_tiempo WHERE anio='2011') AND vtas1.fecha <= (SELECT MAX(fecha) FROM dim_tiempo WHERE mes BETWEEN '201101' AND '201103') AND vtas1.clave_sku = sku1.clave_sku AND ctrl1.proceso ='VENTAS_RFU_GRUPO' AND ctrl1.tipo_carga = 'SQL' AND ACTIVO=1 AND COALESCE(marcas_agrupadas1.grupo_ini,sku1.clave_grupo) <>'99' --and coalesce(marcas_agrupadas1.linea_ini,sku1.clave_linea)='01' --and coalesce(marcas_agrupadas1.marca_ini,sku1.clave_marca)='002' --and coalesce(marcas_agrupadas1.grupo_ini,sku1.clave_grupo)='00' --and sku1.clave_presentacion = '01' GROUP BY COALESCE(marcas_agrupadas1.linea_ini,sku1.clave_linea), COALESCE(marcas_agrupadas1.marca_ini,sku1.clave_marca), COALESCE(marcas_agrupadas1.grupo_ini ,sku1.clave_grupo), sku1.clave_presentacion) vtas2 WHERE vtas2.clave_linea+vtas2.clave_marca+vtas2.clave_grupo+vtas2.clave_presentacion IN (SELECT clave_linea+clave_marca+clave_grupo+clave_presentacion FROM h_lista_precios_grupo WHERE periodo BETWEEN '201101' AND '201103' AND clave_lista_precios NOT LIKE 'LP%')
Necesito fusionarlas de manera que el resultado de la consulta final sean las siguientes columnas:
vtas.periodo, vtas.clave_linea, vtas.clave_marca, vtas.clave_grupo,
vtas.clave_presentacion, vtas.cant_piezas_mes, vtas.cant_litros_mes,
vtas.imp_mxp_mes, vtas2.cant_piezas_acum, vtas2.cant_litros_acum,
vtas2.imp_mxp_acum, vtas.fecha_actualizacion
No tengo idea de como hacerlo. Hice la segunda consulta en una vista y funciona bien, pero lo que me preocupa es que ademas todos los between de esta vista, donde tiene '201101' and '201103' se supone que deberia de ir algo como $$YYYYMM and $$YYYYMM que viene de otra tabla llamada dim_tiempo donde se manejan todas las fechas en ese formato. Asi que las intente fusionar y nose si sea el cansancio de que llevo ya una semana en esto o de plano llegue al limite, pero no pude.
Necesito de su ayuda urgente por favor, pues me la est·n pidiendo para ayer...... hoy soy yo, maÒana me toca a mi ayudarlos. Gracias de todo corazon.
Saludos a todos.
Marsh_Spider