Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/07/2013, 01:48
quimfv
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Restar Ventas de una Vista

Código MySQL:
Ver original
  1. CREATE VIEW V1 (V1_VENDEDOR, VENDEDORES, VENTAS,FECHA) AS
  2. SELECT  DOCTOS_VE.VENDEDOR_ID,
  3.         VENDEDORES.NOMBRE,
  4.         sum (DOCTOS_VE.IMPORTE_NETO *  DOCTOS_VE.TIPO_CAMBIO) ,
  5.         DOCTOS_VE.FECHA
  6. FROM VENDEDORES INNER JOIN  DOCTOS_VE ON VENDEDORES.VENDEDOR_ID = DOCTOS_VE.VENDEDOR_ID
  7. WHERE   ((DOCTOS_VE.TIPO_DOCTO = 'F') OR (DOCTOS_VE.TIPO_DOCTO = 'D'))
  8.         AND  (DOCTOS_VE.ESTATUS <> 'C')
  9. group by VENDEDORES.NOMBRE ,  DOCTOS_VE.FECHA, DOCTOS_VE.VENDEDOR_ID;
  10.  
  11. CREATE VIEW V2 (V1_VENDEDOR, VENDEDORES, VENTAS,FECHA) AS
  12. SELECT DOCTOS_VE.VENDEDOR_ID,
  13.        VENDEDORES.NOMBRE,
  14.        sum (DOCTOS_VE.IMPORTE_NETO * DOCTOS_VE.TIPO_CAMBIO) ,
  15.        DOCTOS_VE.FECHA
  16. FROM VENDEDORES INNER JOIN DOCTOS_VE ON VENDEDORES.VENDEDOR_ID = DOCTOS_VE.VENDEDOR_ID
  17. WHERE (DOCTOS_VE.TIPO_DOCTO = 'D')
  18.   AND (DOCTOS_VE.ESTATUS <> 'N')
  19. group by VENDEDORES.NOMBRE , DOCTOS_VE.FECHA, DOCTOS_VE.VENDEDOR_ID;
  20.  
  21.  
  22. select v1.VENDEDORES,
  23.        SUM(DISTINCT v1.VENTAS)
  24. from v1 left JOIN (select V1_VENDEDOR
  25.                           VENDEDORES,
  26.                           SUM (DISTINCT VENTAS) as TOTAL
  27.                    FROM V2
  28.                    WHERE FECHA BETWEEN '01.05.2013' AND '31.05.2013'
  29.                    GROUP BY VENDEDORES) sbcV2
  30.            ON V1.V1_VENDEDOR = sbcV2.V1_VENDEDOR
  31. GROUP BY v1.VENDEDORES;

No he analizado si las vistas dan lo que dices, me falta información.

En cuanto a la query tienes dos errores,

primero: usas el nombre de una vista como alias de una subconsulta

Código MySQL:
Ver original
  1. select VENDEDORES,
  2.            SUM (DISTINCT VENTAS) as TOTAL
  3.   FROM V2
  4.   WHERE FECHA BETWEEN '01.05.2013' AND '31.05.2013'
  5.    GROUP BY VENDEDORES) V2

mejor no hacerlo, lo corrijo por "sbcV2"

Código MySQL:
Ver original
  1. select VENDEDORES,
  2.            SUM (DISTINCT VENTAS) as TOTAL
  3.   FROM V2
  4.   WHERE FECHA BETWEEN '01.05.2013' AND '31.05.2013'
  5.    GROUP BY VENDEDORES) sbcV2

El segundo error se te hara evidente en el momento que corrijas el primero, puesto que el mensaje de error ahora seria

Engine Code : 335544569
Engine Message :
Dynamic SQL Error
SQL error code = -206
Column unknown <<<< Columna desconocida
sbcV2.V1_VENDEDOR

At line 12, column 225

y te darias cuenta en seguida que ese campo no existe en la subquery sbcV2, si esta en la vista V2 pero no lo has seleccionado en la subquery que tambien llamabas V2.

SUM (DISTINCT VENTAS) as TOTAL el campo que ahora seria sbcV2.TOTAL no se usa en la consulta???
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 04/07/2013 a las 01:55