Ver Mensaje Individual
  #12 (permalink)  
Antiguo 22/01/2010, 13:46
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: buscar sobre el resultado de un sum

Per lo que se entiende, lexus, quieres saber cuántas veces aparece cada número de factura en la tabla PEDIDOS, y al mismo tiempo el importe total de cada una de ellas.
Si eso es así, la consulta debería poder hacerse al mismo tiempo. SI lo que quieres es saber cuántas facturas distintas tienes en PEDIDOS, se vueve un poco incompatible, porque estás pidiendo datos con agrupaciones diferentes.
Lo tuyo parece un reporte de tipo OLAP, por lo que tal vez esto sea lo que andas buscando:
Código MySQL:
Ver original
  1.   IF(NUM_FACTURA IS NULL ,'CANT. DE FACTURAS', IF(TOTAL IS NULL, '', NUM_FACTURA)) N_FACTURA,
  2.   IFNULL(TOTAL,'') IMPORTE_TOTAL,
  3.   IF(TOTAL IS NULL, COUNT(*), '') TOTALFACTURAS
  4.   SELECT NUM_FACTURA, SUM(SUBTOTAL) TOTAL, COUNT(DISTINCT NUM_FACTURA) FACT
  5.   FROM pedidos
  6.   GROUP BY NUM_FACTURA)A
  7. GROUP BY NUM_FACTURA, TOTAL WITH ROLLUP ;

El resultado sería:
Código MySQL:
Ver original
  1. +-------------------+---------------+---------------+
  2. | N_FACTURA         | IMPORTE_TOTAL | TOTALFACTURAS |
  3. +-------------------+---------------+---------------+
  4. | 123               | 105000.00     |               |
  5. |                   |               | 1             |
  6. | 456               | 11000.00      |               |
  7. |                   |               | 1             |
  8. | 889               | 4000.00       |               |
  9. |                   |               | 1             |
  10. | CANT. DE FACTURAS |               | 3             |
  11. +-------------------+---------------+---------------+
  12. 7 rows in set (0.00 sec)
para evitar las líneas que contienen 1 como total facturas, deberíamos transformar tod ala cosnutla en una subconsulta, y eliminar la info inservible.
Código MySQL:
Ver original
  1.   (SELECT
  2.     IF(NUM_FACTURA IS NULL ,'CANT. DE FACTURAS', IF(TOTAL IS NULL, '', NUM_FACTURA)) N_FACTURA,
  3.     IFNULL(TOTAL,'') IMPORTE_TOTAL,
  4.     IF(TOTAL IS NULL, COUNT(*), '') TOTALFACTURAS
  5.   FROM (
  6.     SELECT NUM_FACTURA, SUM(SUBTOTAL) TOTAL, COUNT(DISTINCT NUM_FACTURA) FACT
  7.     FROM pedidos
  8.     GROUP BY NUM_FACTURA)A
  9.   GROUP BY NUM_FACTURA, TOTAL WITH ROLLUP) B
  10.  WHERE N_FACTURA<>'';

Lo que daría:
Código MySQL:
Ver original
  1. +-------------------+---------------+---------------+
  2. | N_FACTURA         | IMPORTE_TOTAL | TOTALFACTURAS |
  3. +-------------------+---------------+---------------+
  4. | 123               | 105000.00     |               |
  5. | 456               | 11000.00      |               |
  6. | 889               | 4000.00       |               |
  7. | CANT. DE FACTURAS |               | 3             |
  8. +-------------------+---------------+---------------+
  9. 4 rows in set (0.00 sec)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 22/01/2010 a las 13:57