Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/06/2011, 21:20
Marsh_Spider
 
Fecha de Ingreso: febrero-2010
Mensajes: 57
Antigüedad: 14 años, 2 meses
Puntos: 1
Consulta para fusionar, dos consultas ya creadas

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 original
  1. SELECT  vtas.periodo,
  2.         vtas.clave_linea,
  3.         vtas.clave_marca,
  4.         vtas.clave_grupo,
  5.         vtas.clave_presentacion,
  6.         vtas.cant_piezas_mes,  
  7.         vtas.cant_litros_mes,  
  8.         vtas.imp_mxp_mes,
  9.         vtas.fecha_actualizacion
  10.     FROM (SELECT
  11.             '201103' AS periodo,
  12.             COALESCE(marcas_agrupadas.linea_ini,sku.clave_linea)  clave_linea,
  13.             COALESCE(marcas_agrupadas.marca_ini,sku.clave_marca) clave_marca,
  14.             COALESCE(marcas_agrupadas.grupo_ini,sku.clave_grupo) clave_grupo,
  15.             sku.clave_presentacion,
  16.             SUM(vtas.ventas_piezas) AS cant_piezas_mes,
  17.             SUM(vtas.ventas_litros) cant_litros_mes,
  18.             SUM(vtas.ventas_mxp) imp_mxp_mes,
  19.             getdate() AS fecha_actualizacion
  20.             FROM RENT_TEMP_VENTAS vtas,
  21.             (SELECT sku.CLAVE_SKU, COALESCE(excep.clave_linea_nvo,sku.CLAVE_LINEA) AS clave_linea,
  22.                 COALESCE(excep.clave_marca_nvo,sku.CLAVE_MARCA) AS clave_marca,
  23.                 COALESCE(excep.clave_grupo_nvo,sku.CLAVE_GRUPO) AS clave_grupo,
  24.                 COALESCE(excep.clave_presentacion_nvo, sku.CLAVE_PRESENTACION) AS clave_presentacion
  25.                 FROM DIM_SKU_HIST sku
  26.                 LEFT OUTER JOIN cat_excepciones_ventas excep
  27.                     ON sku.clave_linea =excep.clave_linea_ant
  28.                     AND sku.clave_marca =excep.clave_marca_ant
  29.                     AND sku.clave_grupo=excep.clave_grupo_ant
  30.                     AND sku.clave_presentacion =excep.clave_presentacion_ant
  31.                     WHERE sku.PERIODO = '201103'
  32.                     AND sku.clave_sku LIKE '19A%') sku
  33.                     LEFT OUTER JOIN
  34.                     (SELECT inicia.clave_linea AS linea_ini, inicia.clave_marca AS marca_ini,
  35.                         inicia.clave_grupo AS grupo_ini ,agrupa.clave_linea, agrupa.clave_marca,
  36.                         agrupa.clave_grupo
  37.                         FROM cat_marcas_iniciales inicia, cat_marcas_agrupadas agrupa
  38.                         WHERE inicia.main_id = agrupa.main_id) marcas_agrupadas
  39.                         ON sku.clave_linea = marcas_agrupadas.clave_linea
  40.                         AND sku.clave_marca = marcas_agrupadas.clave_marca
  41.                         AND sku.clave_grupo = marcas_agrupadas.clave_grupo,
  42.                         rent_control_procesos ctrl
  43.                         WHERE  vtas.fecha >= (SELECT MIN(fecha) FROM dim_tiempo WHERE anio='2011')
  44.                         AND  vtas.fecha <= (SELECT MAX(fecha) FROM dim_tiempo WHERE mes = '201103')
  45.                         AND vtas.clave_sku = sku.clave_sku
  46.                                 AND ctrl.proceso ='VENTAS_RFU_GRUPO'
  47.                                 AND ctrl.tipo_carga = 'SQL'
  48.                                 AND ACTIVO=1
  49.                                 AND COALESCE(marcas_agrupadas.grupo_ini,sku.clave_grupo) <>'99'
  50.                                 AND COALESCE(marcas_agrupadas.linea_ini,sku.clave_linea)='01'
  51.                                 AND COALESCE(marcas_agrupadas.marca_ini,sku.clave_marca)='002'
  52.                                 AND COALESCE(marcas_agrupadas.grupo_ini,sku.clave_grupo)='00'
  53.                                 AND sku.clave_presentacion = '01'
  54.                                 GROUP BY
  55.                                 COALESCE(marcas_agrupadas.linea_ini,sku.clave_linea),
  56.                                 COALESCE(marcas_agrupadas.marca_ini,sku.clave_marca),
  57.                                 COALESCE(marcas_agrupadas.grupo_ini ,sku.clave_grupo),
  58.                                 sku.clave_presentacion) vtas
  59.  
  60.     WHERE  vtas.clave_linea+vtas.clave_marca+vtas.clave_grupo+vtas.clave_presentacion IN
  61.         (SELECT clave_linea+clave_marca+clave_grupo+clave_presentacion
  62.             FROM h_lista_precios_grupo
  63.             WHERE periodo ='201103'
  64.             AND clave_lista_precios NOT LIKE 'LP%')

2.Consulta del acumulado de enero a marzo:
Código SQL:
Ver original
  1. SELECT  vtas2.cant_piezas_acum,
  2.         vtas2.cant_litros_acum,
  3.         vtas2.imp_mxp_acum
  4.     FROM (SELECT
  5.             '201103' AS periodo,
  6.             COALESCE(marcas_agrupadas1.linea_ini,sku1.clave_linea)  clave_linea,
  7.             COALESCE(marcas_agrupadas1.marca_ini,sku1.clave_marca) clave_marca,
  8.             COALESCE(marcas_agrupadas1.grupo_ini,sku1.clave_grupo) clave_grupo,
  9.             sku1.clave_presentacion,
  10.             SUM(vtas1.ventas_piezas) AS cant_piezas_acum,
  11.             SUM(vtas1.ventas_litros) cant_litros_acum,
  12.             SUM(vtas1.ventas_mxp) imp_mxp_acum,
  13.             getdate() AS fecha_actualizacion
  14.             FROM RENT_TEMP_VENTAS vtas1,
  15.             (SELECT sku1.CLAVE_SKU, COALESCE(excep1.clave_linea_nvo,sku1.CLAVE_LINEA) AS clave_linea,
  16.                 COALESCE(excep1.clave_marca_nvo,sku1.CLAVE_MARCA) AS clave_marca,
  17.                 COALESCE(excep1.clave_grupo_nvo,sku1.CLAVE_GRUPO) AS clave_grupo,
  18.                 COALESCE(excep1.clave_presentacion_nvo, sku1.CLAVE_PRESENTACION) AS clave_presentacion
  19.                 FROM DIM_SKU_HIST sku1
  20.                 LEFT OUTER JOIN cat_excepciones_ventas excep1
  21.                     ON sku1.clave_linea =excep1.clave_linea_ant
  22.                     AND sku1.clave_marca =excep1.clave_marca_ant
  23.                     AND sku1.clave_grupo=excep1.clave_grupo_ant
  24.                     AND sku1.clave_presentacion =excep1.clave_presentacion_ant
  25.                     WHERE sku1.clave_sku LIKE '19A%'
  26.                     AND sku1.PERIODO BETWEEN '201101' AND '201103') sku1
  27.                     LEFT OUTER JOIN (SELECT inicia1.clave_linea AS linea_ini, inicia1.clave_marca AS marca_ini,
  28.                                             inicia1.clave_grupo AS grupo_ini ,agrupa1.clave_linea,
  29.                                             agrupa1.clave_marca, agrupa1.clave_grupo
  30.                                         FROM cat_marcas_iniciales inicia1, cat_marcas_agrupadas agrupa1
  31.                                         WHERE inicia1.main_id = agrupa1.main_id) marcas_agrupadas1
  32.                         ON sku1.clave_linea = marcas_agrupadas1.clave_linea
  33.                         AND sku1.clave_marca = marcas_agrupadas1.clave_marca
  34.                         AND sku1.clave_grupo = marcas_agrupadas1.clave_grupo,
  35.                         rent_control_procesos ctrl1
  36.                         WHERE  vtas1.fecha >= (SELECT MIN(fecha) FROM dim_tiempo WHERE anio='2011')
  37.                         AND  vtas1.fecha <= (SELECT MAX(fecha) FROM dim_tiempo WHERE mes BETWEEN '201101' AND '201103')
  38.                                 AND vtas1.clave_sku = sku1.clave_sku
  39.                                 AND ctrl1.proceso ='VENTAS_RFU_GRUPO'
  40.                                 AND ctrl1.tipo_carga = 'SQL'
  41.                                 AND ACTIVO=1
  42.                                 AND COALESCE(marcas_agrupadas1.grupo_ini,sku1.clave_grupo) <>'99'
  43.                                 --and coalesce(marcas_agrupadas1.linea_ini,sku1.clave_linea)='01'
  44.                                 --and coalesce(marcas_agrupadas1.marca_ini,sku1.clave_marca)='002'
  45.                                 --and coalesce(marcas_agrupadas1.grupo_ini,sku1.clave_grupo)='00'
  46.                                 --and sku1.clave_presentacion = '01'
  47.                                 GROUP BY
  48.                                 COALESCE(marcas_agrupadas1.linea_ini,sku1.clave_linea),
  49.                                 COALESCE(marcas_agrupadas1.marca_ini,sku1.clave_marca),
  50.                                 COALESCE(marcas_agrupadas1.grupo_ini ,sku1.clave_grupo),
  51.                                 sku1.clave_presentacion) vtas2
  52.  
  53.     WHERE  vtas2.clave_linea+vtas2.clave_marca+vtas2.clave_grupo+vtas2.clave_presentacion IN
  54.         (SELECT clave_linea+clave_marca+clave_grupo+clave_presentacion
  55.             FROM h_lista_precios_grupo
  56.             WHERE periodo BETWEEN '201101' AND '201103'
  57.             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