miggim lo he conseguido.... pero creo que es una consulta muy poco optima. No la he probado en un gran numero de registros, ya es cuestión si te sirve o no.
Código SQL:
Ver originalSELECT t1.cod,t1.nombre,t2.suma FROM (SELECT nombre,MIN(cod) AS cod FROM tabla GROUP BY
nombre)AS t1 INNER JOIN (SELECT nombre,MIN(cod) AS cod,SUM(cantidad)AS suma FROM tabla
GROUP BY nombre) AS t2 ON t1.cod=t2.cod
UNION
SELECT cod,nombre,'0' FROM tabla
WHERE cod
NOT IN(
SELECT t1.cod FROM (SELECT nombre,MIN(cod) AS cod FROM tabla GROUP BY
nombre)AS t1 INNER JOIN (SELECT nombre,MIN(cod) AS cod,SUM(cantidad)AS suma FROM tabla
GROUP BY nombre) AS t2 ON t1.cod=t2.cod
);
Nos cuentas si la demora es muy critica.
La prueba
Código SQL:
Ver originalpruebas=> SELECT t1.cod,t1.nombre,t2.suma FROM (SELECT nombre,MIN(cod) AS cod FROM miggim1 GROUP BY
pruebas(> nombre)AS t1 INNER JOIN (SELECT nombre,MIN(cod) AS cod,SUM(cantidad)AS suma FROM miggim1
pruebas(> GROUP BY nombre) AS t2 ON t1.cod=t2.cod
pruebas-> UNION
pruebas-> SELECT cod,nombre,'0' FROM miggim1
pruebas-> WHERE cod
pruebas-> NOT IN(
pruebas(> SELECT t1.cod FROM (SELECT nombre,MIN(cod) AS cod FROM miggim1 GROUP BY
pruebas(> nombre)AS t1 INNER JOIN (SELECT nombre,MIN(cod) AS cod,SUM(cantidad)AS suma FROM miggim1
pruebas(> GROUP BY nombre) AS t2 ON t1.cod=t2.cod
pruebas(> );
cod | nombre | suma
-----+--------+------
1 | pepe | 14
2 | pepe | 0
3 | juan | 9
4 | pepe | 0
5 | luis | 12
6 | juan | 0
(6 filas)
saludos