En verdad, seria maravilloso que me pudieran ayudar con este inconveniente; agradezco a toda la comunidad y a los creadores por este increible sitio que me a sacado mucho de apuros. En fin, tengo estas dos consultas que funcionan perfectamente:
1. Consulta mensual:
Código SQL:
Ver originalSELECT 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 originalSELECT 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