Ver Mensaje Individual
  #2 (permalink)  
Antiguo 02/02/2010, 08:35
Avatar de huesos52
huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: Sum +Group + Min

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 original
  1. SELECT t1.cod,t1.nombre,t2.suma FROM (SELECT nombre,MIN(cod) AS cod FROM tabla GROUP BY
  2. nombre)AS t1 INNER JOIN (SELECT nombre,MIN(cod) AS cod,SUM(cantidad)AS suma FROM tabla
  3. GROUP BY nombre) AS t2 ON t1.cod=t2.cod
  4. UNION
  5. SELECT cod,nombre,'0' FROM tabla
  6. WHERE cod
  7. NOT IN(
  8. SELECT t1.cod FROM (SELECT nombre,MIN(cod) AS cod FROM tabla GROUP BY
  9. nombre)AS t1 INNER JOIN (SELECT nombre,MIN(cod) AS cod,SUM(cantidad)AS suma FROM tabla
  10. GROUP BY nombre) AS t2 ON t1.cod=t2.cod
  11. );

Nos cuentas si la demora es muy critica.


La prueba
Código SQL:
Ver original
  1. pruebas=> SELECT t1.cod,t1.nombre,t2.suma FROM (SELECT nombre,MIN(cod) AS cod FROM miggim1 GROUP BY
  2. pruebas(> nombre)AS t1 INNER JOIN (SELECT nombre,MIN(cod) AS cod,SUM(cantidad)AS suma FROM miggim1
  3. pruebas(> GROUP BY nombre) AS t2 ON t1.cod=t2.cod
  4. pruebas-> UNION
  5. pruebas-> SELECT cod,nombre,'0' FROM miggim1
  6. pruebas-> WHERE cod
  7. pruebas-> NOT IN(
  8. pruebas(> SELECT t1.cod FROM (SELECT nombre,MIN(cod) AS cod FROM miggim1 GROUP BY
  9. pruebas(> nombre)AS t1 INNER JOIN (SELECT nombre,MIN(cod) AS cod,SUM(cantidad)AS suma FROM miggim1
  10. pruebas(> GROUP BY nombre) AS t2 ON t1.cod=t2.cod
  11. pruebas(> );
  12.  cod | nombre | suma
  13. -----+--------+------
  14.    1 | pepe   |   14
  15.    2 | pepe   |    0
  16.    3 | juan   |    9
  17.    4 | pepe   |    0
  18.    5 | luis   |   12
  19.    6 | juan   |    0
  20. (6 filas)

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming