Ver Mensaje Individual
  #2 (permalink)  
Antiguo 24/01/2013, 11:56
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 4 meses
Puntos: 447
Respuesta: Restar valores de una Consulta

Hola JuJoGuAl:

En primer lugar no nos das una panorama de la estructura de tus tablas, sus campos o sus datos, tampoco nos dices qué es lo que trataste de hacer (porque supongo que al menos trataste de hacer algo)... mucho ojo para la siguiente.

Supongo que lo que estás intentando hacer es una especie de estado de cuenta o saldos.... en realidad tienes muchas formas para hacer algo como esto... sin tus datos reales ni la información acerca de tus tablas resulta imposible darte una respuesta puntual, pero checa este ejemplo, creo que te puede servir. Supongamos que tenemos estos datos:

Código MySQL:
Ver original
  1. mysql> SELECT * FROM tabla;
  2. +------+----------------+-------+
  3. | id   | tipo_documento | monto |
  4. +------+----------------+-------+
  5. |    1 | DEV            |    10 |
  6. |    2 | DEV            |     9 |
  7. |    3 | FAC            |    21 |
  8. |    4 | DEV            |     9 |
  9. |    5 | FAC            |    22 |
  10. |    6 | FAC            |    30 |
  11. |    7 | FAC            |    29 |
  12. |    8 | DEV            |    40 |
  13. |    9 | FAC            |    11 |
  14. +------+----------------+-------+
  15. 9 rows in set (0.02 sec)

Agrupando de la manera en que lo estás haciendo, tendrías algo así:

Código MySQL:
Ver original
  1. mysql> SELECT tipo_documento, SUM(monto) monto
  2.     ->   FROM tabla
  3.     ->   GROUP BY tipo_documento;
  4. +----------------+-------+
  5. | tipo_documento | monto |
  6. +----------------+-------+
  7. | DEV            |    68 |
  8. | FAC            |   113 |
  9. +----------------+-------+
  10. 2 rows in set (0.00 sec)

para obtenerlo como columnas y no como renglones, podrías utilizar SUMAS CONDICIONALES, es decir, hacer algo como esto:

Código MySQL:
Ver original
  1. mysql> SELECT
  2.     ->   SUM(IF(tipo_documento = 'FAC', monto, 0)) total_facturado,
  3.     ->   SUM(IF(tipo_documento = 'DEV', monto, 0)) total_devuelto,
  4.     ->   SUM(IF(tipo_documento = 'FAC', monto, 0)) -
  5.     ->   SUM(IF(tipo_documento = 'DEV', monto, 0)) total_total
  6.     -> FROM tabla;
  7. +-----------------+----------------+-------------+
  8. | total_facturado | total_devuelto | total_total |
  9. +-----------------+----------------+-------------+
  10. |             113 |             68 |          45 |
  11. +-----------------+----------------+-------------+
  12. 1 row in set (0.00 sec)

Dale un vistazo para ver si te sirve.

Saludos
Leo.