![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
q base de datos estas usando?
coloca algo de lo que hayas avanzado
__________________
Dulce Regalo que Satanas manda para mi..... |
|
#2
|
||||
|
||||
|
__________________
Guía de Estilo de los Foros Cita:
|
|
#3
|
||||
|
||||
|
Gracias por el aporte, de hecho la solución del hilo ya la había probado y en efecto funciona la pega es que consume demasiado tiempo ya que contiene subqueries, de las cuales no soy muy adepto por eso.
Les platico en que consiste la consulta que me pidieron. Tenemos una tabla "talones" que contiene n campos, pero solo nos interesan 3: "sucursal","fecha","importe". La consulta debe obtener la facturacion mensual de una o todas las sucursales durante un año determinado indicando el % de aumento de decremento de cada mes contra el mes anterior (excepto enero) y además el mismo % pero del mes contra el mes del año anterior. Debe aparece un año en cada fila, algo mas o menos así:
Los % de crecimiento mensuales no tienen problema se sacan con campos calculados y listo, el problema era comparar cada mes contra el mismo mes del año anterior o lo que es lo mismo, cada campo "facturacion" contra el mismo campo de la fila inmediata anterior. Al final, lo resolví de la manera chapucera, pero que me dió mejor rendimiento en velocidad, cargo el query sin el % de aumento anual y posteriormente mediante un procedimiento, recorro los campos y calculo los valores, como si se tratara de una vil matriz. Aquí mi query chapucero:
La chapuza que hice fue "crear" campos de la nada en el query con valores 0.00 que son los que posteriormente lleno a pie mediante código recorriendo cada columna correspondiente y haciendo el cálculo, al final si bien es mas trabajo, el resultado es muchísimo más rápido que la consulta con subconsultas. Afortunadamente Zeos permite modificar campos del query aun siendo compuestos como en este caso, por lo que me salió mejor que crear un Dataset en memoria, copiar del query y luego trabajar con él. No cabe duda que deja uno un rato Delphi y como que se oxida el cerebro.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
|
#5
|
||||
|
||||
|
Y había pensado en eso Roman, pero como mencionaba uso Zeos, para poder correr un script de mas de una sentencia SQL tengo que usar TZSQLProcessor, el cual no me devuelve datos. Había pensando en ese enfoque pero utilizando una tabla temporal de MySQL para guardar el resultado pero por tiempos lo tuve que dejar en la chapuza que mostré, además de que ya de por sí la consulta es un poco compleja, quedará para la fase de optimización de códigos.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
|
#6
|
||||
|
||||
|
En este momento no puedo probar pero casi estoy seguro que, mientras no cierres la conexión, puedes ejecutar ambas sentencias por separado y la segunda conservará el valor de la variable.
// Saludos |
|
#7
|
||||
|
||||
|
Has probado a hacer esta prueba ??
No sé si es una burrada, pero igual funciona. month(talones.fecha)=1 and year(talones.fecha)=year(fecha) ... as enero -->> año actual month(talones.fecha)=1 and year(talones.fecha)-1=year(fecha)-1 as enero_año_anterior -->> año anterior con esto consigues tener en una fila añoactual y anterior, aunque tengo la duda de que trage o cruja con el group by. Dices que el código que pones es un poco 'guarrete'. No pienso lo mismo. Es largo, un poco indigesto, pero creo que a nivel de rendimiento es el más eficiente. Por otro lado, he visto en algún sistema, utilizar una tabla auxiliar de tiempo, con una estructura similar a la que pongo, para utilizarla como pivote para calculos temporales. - fecha - año - dia - mes - dia semana - semana - trimestre Cruzando tus datos con ésta, puedes crear el campo que necesites para pivotar, totalizando por el campo que quieras ( año, día, mes, semana, trimestre, ... ). Combinado con unos filtros convenientes, consigues resultados bastante buenos. Espero que te sirva de ayuda. Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Copiar campo ftDATASET a otro campo | delphijm | Conexión con bases de datos | 2 | 14-03-2011 13:55:53 |
| como agrego un campo de otra tabla con query? | gonza_619 | SQL | 3 | 15-02-2010 00:42:40 |
| campo de busqueda con otro campo | josi | Varios | 1 | 04-06-2008 01:53:07 |
| Como enumerar filas de un DBGrid sin agregar otro campo | Velia | Varios | 2 | 06-12-2005 09:58:57 |
| UPDATE de un campo dependiendo del valor de un campo de otra tabla | Javi2 | SQL | 5 | 18-04-2005 17:35:05 |
|