FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
¿Como calcular un campo basado en otro campo de otra fila (registro)?
Digamos un tabla asi:
En el campo Dif se desea colocar la diferencia entre el campo importe de la fila actual y el campo importe de la fila inmediata anterior (a excepción de la primera, cuyo valor seria 0. La idea es obtener algo así:
Mi pregunta es si es posible lograr el resultado únicamente con selects. He logrado hacerlo pero primero pasando la tabla a una en memoria y luego llenando los campos Dif manualmente, pero quizá haya forma de hacerlo directamente en el select.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#2
|
||||
|
||||
q base de datos estas usando?
coloca algo de lo que hayas avanzado
__________________
Dulce Regalo que Satanas manda para mi..... |
#3
|
||||
|
||||
__________________
Guía de Estilo de los Foros Cita:
|
#4
|
||||
|
||||
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|| |
#6
|
||||
|
||||
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|| |
|
|
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 12:55:53 |
como agrego un campo de otra tabla con query? | gonza_619 | SQL | 3 | 14-02-2010 23:42:40 |
campo de busqueda con otro campo | josi | Varios | 1 | 04-06-2008 00:53:07 |
Como enumerar filas de un DBGrid sin agregar otro campo | Velia | Varios | 2 | 06-12-2005 08:58:57 |
UPDATE de un campo dependiendo del valor de un campo de otra tabla | Javi2 | SQL | 5 | 18-04-2005 16:35:05 |
|