Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Restar valores de una Consulta

Estas en el tema de Restar valores de una Consulta en el foro de Mysql en Foros del Web. Buenos dias Amigos (GMT-4.30) estoy haciendo una consulta como esta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT ventas.tipo_documento , SUM ( ventas_detalles.CANTIDAD ) AS cantidad ...
  #1 (permalink)  
Antiguo 24/01/2013, 10:38
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Restar valores de una Consulta

Buenos dias Amigos (GMT-4.30) estoy haciendo una consulta como esta:

Código MySQL:
Ver original
  1. ventas.tipo_documento,
  2. SUM(ventas_detalles.CANTIDAD) AS cantidad,
  3. SUM(ventas_detalles.total_base_imponible) AS monto
  4. FROM ventas_detalles JOIN ventas ON VENTAS_DETALLES.CORRELATIVO_PRINCIPAL=ventas.CORRELATIVO
  5. (VENTAS.FECHA_EMISION BETWEEN '2012.12.01' AND '2012.12.31')
  6. AND (VENTAS_DETALLES.PRODUCTO_NOMBRE LIKE 'TE %')
  7. AND (VENTAS.tipo_documento <> 'ODD') )

TIPO_DOCUMENTO,CANTIDAD,MONTO
DEV,1,19,64
FAC,3903,76654,9199999981

ahora me gustaria que el resultado fuese un solo renglon donde se resten a FAC los montos de DEV

como haria eso?
  #2 (permalink)  
Antiguo 24/01/2013, 11:56
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 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.
  #3 (permalink)  
Antiguo 24/01/2013, 13:32
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Restar valores de una Consulta

es que es un archivo *.mdf que estoy modificando con un sql, y me cuesta obtener acceso a toda la data, ademas que son bastante grandes, estoy tratando de consultar ventas x tipo calculando la cantidad y el monto de dicha venta (en el ejemplo los Té), ahora bien en tipo_documento tengo otro tipo de documento que son ODD esos no deben contarse, entonces en el IF que colocaste puedo poner 2 condiciones es decir ='FAC' AND !='ODD' o no se permite?

Tu Ejemplo es Netamente lo que necesito solo con unos cambios
  #4 (permalink)  
Antiguo 24/01/2013, 14:16
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Restar valores de una Consulta

Hola de nuevo:

Si estás haciendo referencia al mismo campo, no le veo sentido a la comparación, es decir si tu campo es igual a 'FAC' entonces NO PUEDE SER IGUAL A 'ODD'... es decir, no hay un impedimento para poner la condición, sería así:

Código:
IF(tipo_documento = 'FAC' AND tipo_documento != 'ODD, monto, 0)
Pero insisto en que la condición no tiene sentido... es como preguntar

Código:
-¿Eres mujer?- si-
-entonces ¿No eres hombre?- bofetada por ponerlo en duda.
Saludos
Leo.
  #5 (permalink)  
Antiguo 24/01/2013, 15:36
Avatar de JuJoGuAl  
Fecha de Ingreso: julio-2009
Ubicación: Venezuela
Mensajes: 754
Antigüedad: 14 años, 8 meses
Puntos: 19
Respuesta: Restar valores de una Consulta

jajajaja si disculpa ahora que lo dices tiene sentido es que me estaba dando un numero incorrecto pero ya lo logre, el problema es que mis sentencias son SQL lo logre haciendo esto:
Código MySQL:
Ver original
  1. (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.CANTIDAD,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.CANTIDAD,0))) AS cantidad,
  2. (SUM(IIF(VENTAS.tipo_documento = 'FAC',ventas_detalles.total_base_imponible,0))-SUM(IIF(VENTAS.tipo_documento = 'DEV',ventas_detalles.total_base_imponible,0))) AS monto

pregunta OFFTOpic como haces para colocar la consulta y luego el resultado del query asi? yo pego mis querys en los HIGHLIGHT que dicen MYSQL pero no se ve asi como los planteas tu
  #6 (permalink)  
Antiguo 24/01/2013, 16:39
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: Restar valores de una Consulta

Cita:
pregunta OFFTOpic como haces para colocar la consulta y luego el resultado del query asi? yo pego mis querys en los HIGHLIGHT que dicen MYSQL pero no se ve asi como los planteas tu
Leonardo lo que hace (según supongo porque yo hago lo mismo) es realizar todas las pruebas en consola de MySL y luego copiar y pegar el contenido de la consola.
Cuando lo haces así, al usar el Highlight "MySQL" se ve todo correctamente formateado y encolumnado...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: join, restar, select
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:34.