Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-10-2017
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 288
Poder: 21
identsoft Va por buen camino
No es eso lo que busco.
Lo que intento sacar es todos los vencimientos comprendidos entre dos fecha (independientemente de si es el mismo cliente o es la misma fecha) pero (y aquí viene la cuestión) que la suma de lo que voy seleccionando( el importe total , no la suma del importe por cliente ) no supere el importe que le diga.

En forma de bucle seria:
leo registro 1 ; sumimporte = sumimporte + importe
si sumimporte > importeseleccionado salgo del bucle
si no
leo registro2 sumimporte = sumimporte + importe
si sumimporte > importeseleccionado salgo del bucle
sino
leo registro3......

algo así pero en forma de sql

gracias nincillo
Responder Con Cita
  #2  
Antiguo 02-10-2017
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 190
Poder: 10
nincillo Va por buen camino
Me temo que eso para un sql "normal" es bastante complicado.

Creo que tendrías que hacerlo utilizando algún cursor o algo así.
Responder Con Cita
  #3  
Antiguo 02-10-2017
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Es posible con Sql normal, pero todo depende del motor y su version. En el caso de Firebird, desde la version 3:

https://www.firebirdsql.org/file/com...3windowing.pdf
__________________
El malabarista.
Responder Con Cita
  #4  
Antiguo 02-10-2017
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 190
Poder: 10
nincillo Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Es posible con Sql normal, pero todo depende del motor y su version. En el caso de Firebird, desde la version 3:

https://www.firebirdsql.org/file/com...3windowing.pdf
Menudo pedazo de manual interesante...
Pero no son horas para digerir algo tan "denso".

Me lo apunto para mañana, pero me implicaría cambiar a la versión 3, que hasta ahora no había pasado de la 2.5 por temor a incompatibilidades.
Responder Con Cita
  #5  
Antiguo 02-10-2017
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.941
Poder: 27
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Pero las funciones windows LO VALEN. Son geniales y resuelven un montón de escenarios.

P.D: Y si uno tiene la opción, es bueno siempre ir actualizando el motor a lo ultimo. No solo porque por lo general mejoran desempeño y resuelven bugs, sino porque el SQL se ha ido actualizando!

A proposito, asi es como quedaria:

Código SQL [-]
-- Puse los datos en memoria pa testear
WITH datos AS (
SELECT 'cliente 1' as cliente, '21-09-2017' as fecha, 40 AS importe
UNION ALL
SELECT 'cliente 2', '22-09-2017', 30
UNION ALL
SELECT 'cliente 3', '23-09-2017', 20
UNION ALL
SELECT 'cliente 4', '23-09-2017', 30
UNION ALL
SELECT 'cliente 5', '23-09-2017', 20
)

SELECT * FROM (
   -- Aqui es la magia. Usando la funcion WINDOW SUM que recorre (como un FOR) ordenado por cliente. Es importante tener en cuenta el orden. Esto acumula la suma
    SELECT *, SUM(importe) OVER (ORDER BY cliente) AS acumulado FROM datos
) reporte
-- Y por ultimo se filtra
WHERE acumulado < 100
__________________
El malabarista.
Responder Con Cita
  #6  
Antiguo 02-10-2017
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.682
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por mamcx Ver Mensaje
Es posible con Sql normal, pero todo depende del motor y su version. En el caso de Firebird, desde la version 3:
https://www.firebirdsql.org/file/com...3windowing.pdf
Vaya, más cosas para estudiar
Responder Con Cita
  #7  
Antiguo 03-10-2017
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 288
Poder: 21
identsoft Va por buen camino
Genial!!
El problema es que trabajo con firebird 2.5
Hay que estudiar la posibilidad del cambio.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Tu mac puede hacer esto????? AzidRain Humor 10 24-11-2010 00:16:25
Se puede hacer esto? Migpal OOP 3 22-10-2005 20:02:30
Se puede hacer esto ??????? AMINOA2R Firebird e Interbase 2 21-10-2005 17:50:59
Se puede hacer esto en POO? adlfv OOP 8 26-09-2005 16:28:55


La franja horaria es GMT +2. Ahora son las 09:01:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi