Club Delphi  
    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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-10-2017
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
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
  #2  
Antiguo 02-10-2017
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
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
  #3  
Antiguo 02-10-2017
nincillo nincillo is offline
Miembro
 
Registrado: may 2017
Posts: 151
Poder: 8
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
  #4  
Antiguo 02-10-2017
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
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
  #5  
Antiguo 02-10-2017
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi 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
  #6  
Antiguo 03-10-2017
identsoft identsoft is offline
Miembro
 
Registrado: abr 2006
Posts: 282
Poder: 19
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



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:46:36.


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