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

Formula Excel a Consulta SQL

Estas en el tema de Formula Excel a Consulta SQL en el foro de Mysql en Foros del Web. Estimados, soy nuevo en este foro y se que hay mucha gente solidaria dispuesta ayudar a otros programadores. Resulta que tengo la siguiente situación: Tengo ...
  #1 (permalink)  
Antiguo 18/06/2013, 09:49
 
Fecha de Ingreso: junio-2013
Ubicación: Santiago
Mensajes: 13
Antigüedad: 10 años, 10 meses
Puntos: 0
Pregunta Formula Excel a Consulta SQL

Estimados,
soy nuevo en este foro y se que hay mucha gente solidaria dispuesta ayudar a otros programadores. Resulta que tengo la siguiente situación:

Tengo esta formula en Excel:
=
1)-SUMA((GRP_CONTABLE=6)*(CPTO_CONTABLE=1173)*(TP_FAC TURA=220)*SI((Cod_Producto=1)+(Cod_Producto=3);1)* (Cod_Comercio = "000000000000001")*MONTO)

2)-SUMA((GRP_CONTABLE=6)*(CPTO_CONTABLE=1174)*(TP_FAC TURA=220)*(Cod_Comercio = "000000000000001")*SI((Cod_Producto=1)+(Cod_Produc to=3);1)*MONTO)

4)-SUMA((GRP_CONTABLE=6)*(CPTO_CONTABLE=1173)*(TP_FAC TURA=220)*(Cod_Producto<>5)*(Cod_Comercio <> "000000000000001")*MONTO)

5)-SUMA((GRP_CONTABLE=6)*(CPTO_CONTABLE=1174)*(TP_FAC TURA=220)*(Cod_Comercio <> "000000000000001")*SI((Cod_Producto=1)+(Cod_Produc to=3);1)*MONTO)


Esta formula la estoy generando en SQL donde las 2 primeras condiciones SUM tengo lo siguiente:
Código MySQL:
Ver original
  1. SELECT SUM(importe) FROM mpj15005_copy
  2. WHERE grupo_contable = 6
  3. AND concepto_contable IN (1173,1174)
  4. AND tipo_de_factura = 220
  5. AND codigo_de_producto IN(1,3);
  6. AND codigo_de_comercio = 1;

Y funcionan correctamente pero necesito incluir las otras sumas restante en la misma consulta SQL.
Ahora el problema es como agrego las dos SUMA 3 y 4 que me faltan en el mismo Select ya que tienen los mismos campos pero con diferente condición... No encuentro la forma de como hacerlo aparte mis conocimientos de SQL son basicos...

Espero que me ayuden por favor!

Última edición por gnzsoloyo; 18/06/2013 a las 18:36
  #2 (permalink)  
Antiguo 18/06/2013, 11:10
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 7
Respuesta: Formula Excel a Consulta SQL

Hola calbornozd.

Para tu problema planteado es muy indeterminado poder ayudarte, debido a que necesitamos que nos muestres las tablas de como guardas la información, y en tu caso, que significa cada campo, que almacena cada campo.

Si la consultas que has posteado te ha funcionado, muestra como están construidas las tablas y podremos ayudarte mejor.

Saludos.
  #3 (permalink)  
Antiguo 18/06/2013, 12:49
 
Fecha de Ingreso: junio-2013
Ubicación: Santiago
Mensajes: 13
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Formula Excel a Consulta SQL

Gracias max_mouse699 te mando la estructura de la tabla, al parecer debiera de ocupar onion ALL para las sumas pero nose realmente como se utiliza esta consulta, si es que tienes conocimiento alguno sobre esto
Código MySQL:
Ver original
  1. tabla mpj15005_copy(
  2. grupo_contable int,
  3. concepto_contable int,
  4. tipo_factura int,
  5. importe int,
  6. codigo_de_comercio int
  7. );

Saludos!

Última edición por gnzsoloyo; 18/06/2013 a las 18:35
  #4 (permalink)  
Antiguo 18/06/2013, 14:17
 
Fecha de Ingreso: abril-2011
Mensajes: 66
Antigüedad: 13 años
Puntos: 7
Respuesta: Formula Excel a Consulta SQL

@calbornozd: me parece que no fui lo bastante claro, ademas de lo que posteaste, también necesitamos entender que significa cada formula, porque a simple vista me puedo imaginar que todas las formulas obtienen un valor, y que ese valor es el concepto de importe que mencionas en uno de los campos de la BD. Aclarame si lo que imagino es corecto o no.

Los otros campos de la BD, de donde se obtienen ?

Al parecer la formula 1 y 2, es la misma que la 4 y 5, o no ?

Espero tu respuesta.
Saludos.
  #5 (permalink)  
Antiguo 18/06/2013, 16:09
 
Fecha de Ingreso: junio-2013
Ubicación: Santiago
Mensajes: 13
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Formula Excel a Consulta SQL

max la consulta sql que escribi es la misma para todas las sumas, solo que cambia la condicion ejemplo en la primera y segunda suma la condicion codigo_de_comercio =1
pero en la suma tercera y cuarta la condicion cambia seria codigo_de_comercio<>1

como logro realizar dicha consulta para todas las sumas!

Saludos!!
  #6 (permalink)  
Antiguo 18/06/2013, 18:42
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, 5 meses
Puntos: 2658
Una parte del problema es que estás mirando los resultados como una tabla de Excel, y no es el caso. Tienes que pensarlo y describirlo como un resultado de una consulta SQL, que no se escribe ni se evalúa de la misma forma.
Este conjunto de fórmulas:
Cita:
1) SUMA((GRP_CONTABLE=6)*(CPTO_CONTABLE=1173)*(TP_FAC TURA=220)*SI((Cod_Producto=1)+(Cod_Producto=3);1)* (Cod_Comercio = "000000000000001")*MONTO)

2) SUMA((GRP_CONTABLE=6)*(CPTO_CONTABLE=1174)*(TP_FAC TURA=220)*(Cod_Comercio = "000000000000001")*SI((Cod_Producto=1)+(Cod_Pr oduc to=3);1)*MONTO)

4) SUMA((GRP_CONTABLE=6)*(CPTO_CONTABLE=1173)*(TP_FAC TURA=220)*(Cod_Producto<>5)*(Cod_Comercio <> "000000000000001")*MONTO)

5) SUMA((GRP_CONTABLE=6)*(CPTO_CONTABLE=1174)*(TP_FAC TURA=220)*(Cod_Comercio <> "000000000000001")*SI((Cod_Producto=1)+(Cod_Pr oduc to=3);1)*MONTO)
resulta terriblemente confuso, porque no podemos separar mentalmente las condiciones que existen para cada resultado. Eso es lo que se te pide que clarfiques: ¿Qué es lo que cada una calcula?
Piensa que para nosotros, que nos digas:
Cita:
pero en la suma tercera y cuarta la condicion cambia seria codigo_de_comercio<>1
Nos llevaría a pensar que las dos consultas finales calculan lo mismo... y no parece ser así.

En otras palabras: ¿Qué representa cada calculo? ¿El total de qué? Qué condiciones se cumplen en cada caso (descriptas separadamente)?

Bueno, tratemos de entender las sumas que intentas lograr:
Suma 1:
Cita:
SUMA(
(GRP_CONTABLE=6) * (CPTO_CONTABLE=1173) * (TP_FAC TURA=220) *
SI((Cod_Producto=1) + (Cod_Producto=3);1) * (Cod_Comercio = "000000000000001") *MONTO)
Es decir que si:
- Grupo_contable = 6
- Concepto Contable = 1173
- TP Factura = 220
- Codigo Producto = 1 ó Codigo Producto = 3
- Código Comercio = 1
Entonces suma MONTO

Suma 2:
Cita:
SUMA(
(GRP_CONTABLE=6) * (CPTO_CONTABLE=1174) * (TP_FAC TURA=220) * (Cod_Comercio = "000000000000001") *
SI((Cod_Producto=1) + (Cod_Produc to=3);1) * MONTO)
Es decir que si:
- Grupo_contable = 6
- Concepto Contable = 1174
- TP Factura = 220
- Codigo Producto = 1 ó Codigo Producto = 3
- Código Comercio = 1
Entonces suma MONTO


Suma 4:
Cita:
SUMA(
(GRP_CONTABLE=6) * (CPTO_CONTABLE=1173) * (TP_FAC TURA=220) * (Cod_Producto<>5) * (Cod_Comercio <> "000000000000001") * MONTO)
Es decir que si:
- Grupo_contable = 6
- Concepto Contable = 1173
- TP Factura = 220
- Codigo Producto <> 5
- Código Comercio = 1
Entonces suma MONTO


Suma 5:
Cita:
SUMA(
(GRP_CONTABLE=6) * (CPTO_CONTABLE=1174) * (TP_FAC TURA=220) * (Cod_Comercio <> "000000000000001") *
SI((Cod_Producto=1) + (Cod_Produc to=3);1) * MONTO)
Es decir que si:
- Grupo_contable = 6
- Concepto Contable = 1174
- TP Factura = 220
- Codigo Producto = 1 ó Codigo Producto = 3
- Código Comercio <> 1
Entonces suma MONTO

En escecia, hay algunas condiciones comunes y un par que cabian.
La solución andaría mas o menos cerca de lo que hiciste:
Código MySQL:
Ver original
  1.     SUM(IF(cpto_contable = 1173 AND codigo_de_producto IN(1,3) AND codigo_de_comercio = 1, importe, 0)) Suma1,
  2.     SUM(IF(cpto_contable = 1174 AND codigo_de_producto IN(1,3) AND codigo_de_comercio = 1, importe, 0)) Suma2,
  3.     SUM(IF(cpto_contable = 1174 AND codigo_de_producto != 5 AND codigo_de_comercio = 1, importe, 0)) Suma4,
  4.     SUM(IF(cpto_contable = 1174 AND codigo_de_producto IN(1,3) AND codigo_de_comercio != 1, importe, 0)) Suma5
  5. FROM mpj15005_copy
  6. WHERE grupo_contable = 6
  7.     AND concepto_contable IN (1173,1174)
  8.     AND tipo_de_factura = 220;
Esta sería una de las formas más rápidas. Otras más simples en sintaxis necesitarían de varias consultas unidas con un JOIN, pero no serían tan eficientes. El problema para hacerlo en una única consulta es que las cuatro tienen condiciones interexcluyentes, por lo que no puedes lograrlo de modo simple.
Hay una consideración que debes tener en cuenta: La tercera consulta está incluyendo valores ya calculados para la primera, y la cuarta está incluyendo los de la tercera.
Es decir: La información, dependiendo del contexto, puede no ser fiable, porque existe redundancia lógica y solapamiento en el cálculo.
__________________
¿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; 18/06/2013 a las 19:20
  #7 (permalink)  
Antiguo 19/06/2013, 08:22
 
Fecha de Ingreso: junio-2013
Ubicación: Santiago
Mensajes: 13
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Formula Excel a Consulta SQL

gnzsoloyo, Gracias por Responder.
le seguire dando vueltas ya que esta formula excel no la realice yo y si supiera entenderia mejor como realizar la consulta SQL de hecho ejecute tu consulta pero me arrojo en las sumas valor NULL..

Te todas formas muchas gracias y si encuentro la solución respondo el post en caso que alguien pase por la misma situación que yo
  #8 (permalink)  
Antiguo 19/06/2013, 10:21
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, 5 meses
Puntos: 2658
Respuesta: Formula Excel a Consulta SQL

Cita:
ejecute tu consulta pero me arrojo en las sumas valor NULL..
Bueno, para este caso lo mejor sería empezar viendo si hay registros a sumar...
Código MySQL:
Ver original
  1. FROM mpj15005_copy
  2. WHERE grupo_contable = 6
  3.     AND concepto_contable IN (1173,1174)
  4.     AND tipo_de_factura = 220;
Porque por allí, estamos intentando sumar algo que no existe, o por lo menos que no cumple las condiciones indicadas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 19/06/2013, 10:44
 
Fecha de Ingreso: junio-2013
Ubicación: Santiago
Mensajes: 13
Antigüedad: 10 años, 10 meses
Puntos: 0
Respuesta: Formula Excel a Consulta SQL

gnzsoloyo,
De hecho esos campos no tienen registros por lo que voy a tener que ingresar y ver la consulta SQL que me enviaste... Te comento si funciona

Saludos!

Etiquetas: campo, excel, formula, select, sql
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 20:24.