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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2011
Avatar de Zeta
Zeta Zeta is offline
Miembro
 
Registrado: feb 2005
Posts: 215
Poder: 20
Zeta Va por buen camino
ROWNUM() en FirebirdSQL

Hola a todos,

Estaba probando unas consultas con Firebird y he leído por ahí que no trae la función ROWNUMBER.
La idea es que cada registro tenga un número desde 1.

¿Cuál sería una forma fácil de implementarla?
Código SQL [-]
SELECT
     rdb$get_context('USER_TRANSACTION', 'row#') as row_number,
     rdb$set_context('USER_TRANSACTION', 'row#', 
     coalesce(cast(rdb$get_context('USER_TRANSACTION', 'row#') as integer), 0) + 1),
    PERSONAL.NOMBRES,
    PERSONAL.APELLIDOS
FROM
    PERSONAL


El problema de este código es que sigo aumentando en uno cada vez que hago la misma consulta.

De otra forma tendré que implementarla desde delphi, pero quería hacerla desde la DB.



Saludos.
__________________
And I'd like an hour on the holodeck with Seven of Nine.

Última edición por Zeta fecha: 18-10-2011 a las 03:57:36.
Responder Con Cita
  #2  
Antiguo 18-10-2011
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Perdona mi ignorancia, ¿para que necesitas el rownumber?
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #3  
Antiguo 18-10-2011
Luis F. Orjuela Luis F. Orjuela is offline
Miembro
 
Registrado: may 2003
Ubicación: Bogotá - Colombia
Posts: 68
Poder: 21
Luis F. Orjuela Va por buen camino
Yo solucioné esa necesidad utilizando un PROCEDIMIENTO ALMACENADO, a continuación te muestro uno:
Código SQL [-]
CREATE PROCEDURE CUENTAS_TERCE(
  NIT VARCHAR(12) CHARACTER SET NONE)
RETURNS(
  NRO SMALLINT,
  CTA_LOCAL INTEGER,
  CTA_CORPO INTEGER)
AS
BEGIN
  NRO = 0;
  FOR SELECT CUENTA_LOCAL,CUENTA_CORPO FROM CUENTAS_TERCEROS
    WHERE NIT_TERCERO = :NIT
  into :CTA_LOCAL,:CTA_CORPO

  DO  
    BEGIN
     NRO = NRO +1;
     SUSPEND;
    END 
END

Y este es el resultado obtenido:

Código SQL [-]
  NRO  CTA_LOCAL  CTA_CORPO 
    1   23651501     224400 
    2   51104001     669900 
    3   51159502     771100 
    4   52159502     771100 
    5   51104001     664500 
    6   51150500     771100 
    7   51400501     725200 
    8   51401501     725200 
    9   51954501     712100
__________________
Ing. LUIS FERNANDO ORJUELA
BOGOTA - COLOMBIA
Responder Con Cita
  #4  
Antiguo 19-10-2011
Avatar de Zeta
Zeta Zeta is offline
Miembro
 
Registrado: feb 2005
Posts: 215
Poder: 20
Zeta Va por buen camino
Cita:
Empezado por mightydragonlor Ver Mensaje
Perdona mi ignorancia, ¿para que necesitas el rownumber?
Solamente para especificar un nro. de orden, nada prioritario, lo quería hacer desde la base de datos.
__________________
And I'd like an hour on the holodeck with Seven of Nine.
Responder Con Cita
  #5  
Antiguo 19-10-2011
Avatar de Zeta
Zeta Zeta is offline
Miembro
 
Registrado: feb 2005
Posts: 215
Poder: 20
Zeta Va por buen camino
Thumbs up

Gracias Luis,tu código funciona perfecto!




Saludos y Gracias
__________________
And I'd like an hour on the holodeck with Seven of Nine.
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


La franja horaria es GMT +2. Ahora son las 02:41:35.


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