Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-07-2011
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
Stored Procedure en Firebird complejo

Hola !

Estoy intentando crear un Stored Procedure en Firebird 2.1 de la siguiente manera :

1ª Consulta : De un conjunto de registros determinado que obtengo, los ordeno de una manera específica y sólo tomo el 1er registro.

Código SQL [-]
Select ....   order by .... rows 1

2ª y 3ª Consultas posterior : Hago un Select de registros determinados y me devuelve cada consulta un número de registros determinado

Estas tres consultas las tengo que unir y devolver los registros ordenados de manera ascendete por un campo Timestamp.

Hasta aquí más o menos no tengo problemas.

El problema que tengo ahora está en que entre cada uno de esos registros, ordenados por Timestamp (Fecha y Hora), necesito a su vez obtener un totalizado de registros que se han producido entre cada uno de los Timestamp's.

Me explico con un ejemplo y algunos datos : Supongamos que las tres primeras consultas me devuelven :
1 01.01.11 10:00
2 01.02.11 11:00
3 01.03.11 12:00
4 01.04.11 13:00
5 01.05.11 14:00

Mi consulta final debe devolverme además un totalizado de registros cuya fecha de creación haya sido entre los timestamp de 1 y 2, 2 y 3, 3 y 4 .... para que me quede al final algo así como

1 01.01.11 10:00
Totalizado = 5
2 01.02.11 11:00
Totalizado = 3
3 01.03.11 12:00
Totalizado = 0
4 01.04.11 13:00
Totalizado = 7
5 01.05.11 14:00

He intentado hacer un For Select con un Union entre las tres primeras consultas, para despues dentro del bucle begin end del 'For Select' realizar los cálculos de los totalizados, pero me encuentro con el problema de que la primera consulta incluye un 'order by' y un 'rows 1'. Ya que necesito que sólo me devuelva el primer registro de varios, es indispensable el 'order by' + 'rows 1'.

El problema es que después de un 'order by' y 'rows 1' no puedo ejecutar un 'Union'.

Código SQL [-]
For Select 1 ....
    order by ...
    rows 1
 
    union
    Select 2 ....
    union
    Select 3 ....
 
do begin
   Cálculo del Totalizado entre Fechas de Registros
end

Alguna idea o ayuda cómo enfocar este cálculo ?

Gracias
__________________
Piensa siempre en positivo !
Responder Con Cita
 



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
Stored Procedure 2 Bases Firebird Joe_Balda Firebird e Interbase 2 06-06-2011 21:04:09
Incrementar Store Procedure Firebird sierraja Firebird e Interbase 5 16-11-2009 16:23:23
Ayuda con Stored Procedure Firebird Blackspike Firebird e Interbase 4 07-01-2008 18:18:39
Store procedure en firebird ronimaxh Firebird e Interbase 4 19-04-2006 11:42:12
commit dentro de un procedure de firebird cahosoft Firebird e Interbase 2 10-09-2005 04:02:03


La franja horaria es GMT +2. Ahora son las 19:15:06.


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