MySQL - Problemas con Union y SUM

   
Vista:

Problemas con Union y SUM

Publicado por Maximiliano (2 intervenciones) el 31/05/2013 20:04:38
Hola a todos

Estoy tratando de realizar una consulta la cual devuelve la suma de un campo de dos tablas distintas, el problema que tengo es que me muestra los resultados de SUM por separados y yo necesitaría tener un rolo registro por cliente en vez de dos.

Adjunto el código y la imagen con el resultado


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
SELECT clientes.clie_razonsocial, SUM(vent_total) AS TOTAL  FROM
    ventas
 LEFT JOIN clientes
        ON (ventas.vent_idcliente = clientes.clie_id)
WHERE DATE(ventas.vent_fecha) BETWEEN '2013-01-01' AND '2013-12-31' AND vent_anulada =0 AND  (vent_idtipocomp=1 OR vent_idtipocomp=2 OR vent_idtipocomp=13)
        GROUP BY clientes.clie_razonsocial
 UNION
 
 SELECT clientes.clie_razonsocial, SUM(vent_total) AS TOTAL  FROM
    ventas99
 LEFT JOIN clientes
        ON (ventas99.vent_idcliente = clientes.clie_id)
WHERE DATE(ventas99.vent_fecha) BETWEEN '2013-01-01' AND '2013-12-31' AND vent_anulada =0 AND  (vent_idtipocomp=1 OR vent_idtipocomp=2 OR vent_idtipocomp=13)
GROUP BY clientes.clie_razonsocial
ORDER BY clie_razonsocial ASC


Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Problemas con Union y SUM

Publicado por xve (898 intervenciones) el 01/06/2013 09:43:05
Hola Maximiliano, de seguro que hay una forma mejor, pero al no entender muy bien tu consulta ...(por no tener la estructura de la tablas)

podrías ser así:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
SELECT clie_razonsocial,sum(TOTAL) as Total2 FROM
(
    SELECT clientes.clie_razonsocial, SUM(vent_total) AS TOTAL  FROM
        ventas
    LEFT JOIN clientes
            ON (ventas.vent_idcliente = clientes.clie_id)
    WHERE DATE(ventas.vent_fecha) BETWEEN '2013-01-01' AND '2013-12-31' AND vent_anulada =0 AND  (vent_idtipocomp=1 OR vent_idtipocomp=2 OR vent_idtipocomp=13)
            GROUP BY clientes.clie_razonsocial
    UNION
 
    SELECT clientes.clie_razonsocial, SUM(vent_total) AS TOTAL  FROM
        ventas99
    LEFT JOIN clientes
            ON (ventas99.vent_idcliente = clientes.clie_id)
    WHERE DATE(ventas99.vent_fecha) BETWEEN '2013-01-01' AND '2013-12-31' AND vent_anulada =0 AND  (vent_idtipocomp=1 OR vent_idtipocomp=2 OR vent_idtipocomp=13)
    GROUP BY clientes.clie_razonsocial
    ORDER BY clie_razonsocial ASC
) s1
GROUP BY clie_razonsocial


Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Problemas con Union y SUM

Publicado por Maximiliano (2 intervenciones) el 03/06/2013 13:18:13
Perfecto

Muchísimas gracias por la ayuda, era lo que estaba necesitando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar