Select com numero sequencial

14/04/2011

0

Gostaria de que um determidado sql me retornasse a sequencia de numeros ex

Select ***, ID, NOME FROM TABELA

Resultado

1, 0, maria
2, 1, joao
3, 2, bruno
........
Eduardo Richeli

Eduardo Richeli

Responder

Post mais votado

28/04/2011

publique sua instrução SQL

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

14/04/2011

Wilson Junior

Crie um Generator para isto.

Espero ter colaborado.
Responder

19/04/2011

Eduardo Richeli

a verdade nao e sequencial ao gravar e sim ao executar um select
Responder

19/04/2011

Gustavo Bretas

Eduardo, no Oracle tem o comando ROWNUM, o firebird acho que não tem.
Você ja pensou em criar um procedure? Talvez não seja a melhor solução, mas no seu caso eu acho que é a única... rs!
Pensa ae!
Responder

19/04/2011

Wilson Junior

Mas você pode utilizar o GENERATOR no seu SQL, não citei na hora de gravar.

Espero ter colaborado.
Responder

19/04/2011

Anderson

Faz assim:

select
rdb$get_context('USER_TRANSACTION', 'row#') as NUMERO,
rdb$set_context('USER_TRANSACTION', 'row#',
coalesce(cast(rdb$get_context('USER_TRANSACTION', 'row#') as integer), 0) + 1),
NOME from CIDADE;

Defina no componente de visualização, quais campos devem ficar visíveis. Use o campo NUMERO somente para exibição (não serve para ser utilizado como campo chave).

Abraços,

Anderson:.

Responder

20/04/2011

Eduardo Richeli

quase deu certo, porem ao fazer uma segunda consulta o numero continua incremental em vez de iniciar do 0 novamente, alguma sugestão, obrigado a todos
Responder

20/04/2011

Junior Miranda

Já pensou em usar uma Stored Procedure?

[]'s
Responder

20/04/2011

Junior Miranda

Já pensou em usar uma Stored Procedure?

[]'s
Responder

20/04/2011

Eduardo Richeli

Já pensou em usar uma Stored Procedure?

[]'s




fim um sp porem ocasiona o mesmo problema
Responder

26/04/2011

Eduardo Richeli

up...
Responder

26/04/2011

Wilson Junior

COmo você fez seu SQL? Coloque ele aqui...
Responder

27/04/2011

Emerson Nascimento

tente algo assim:

select
  (select count(c2.id_cargahoraria)
   from cargahoraria c2
   where coalesce(c2.entrada,'01.01.1900') <= coalesce(c1.entrada,'01.01.1900')) ordem,
  c1.*
from cargahoraria c1
order by c1.entrada

nesse caso eu ordenei por entrada e fiz a comparacao por entrada.



se fosse por nome:

select
  (select count(c2.id_cliente)
   from cliente c2
   where c2.nome <= c1.nome and c2.id_cliente <= c1.id_cliente) ordem,
  c1.*
from cliente c1
order by c1.nome, c1.id_cliente

note que no caso acima usei dois campos para ordenação, pois posso ter clientes homônimos.


para que não haja perda de performance  -  por conta da sub-select  -  é melhor que haja índices criados para os campos usados como referência para a geração do campo virtual ordem.
Responder

27/04/2011

Eduardo Richeli

Emerson


Quase foi la

Ficou da seguinte forma

ORDEM ID NOME
1          2   NOME1
1          3   NOME2
1          7   NOME3
1          8   NOME5
1          9   NOME6
1          10   NOME7

isto e repetiu o campo ordem, tentei de outras maneiras, mas deu no mesmo...
Responder

27/04/2011

Eduardo Richeli

COmo você fez seu SQL? Coloque ele aqui...


select
rdb$get_context('USER_TRANSACTION', 'row#') as NUMERO,
rdb$set_context('USER_TRANSACTION', 'row#',
coalesce(cast(rdb$get_context('USER_TRANSACTION', 'row#') as integer), 0) + 1),
NOME from CIDADE;

Responder

30/08/2013

Carlo Ferreira

Fiz aqui e deu certo:

--SETAR UMA VARIÁVEL DE CONTEXTO COM O VALOR 0

SELECT
RDB$SET_CONTEXT(USER_SESSION, SEQ_TMP, 0)
FROM RDB$DATABASE

--UTILIZAR A VARIÁVEL DE CONTEXTO COMO SEQUENCIAL NA PRIMEIRA COLUNA E INCREMENTAR NA SEGUNDA COLUNA
--TERCEIRA E QUARTA COLUNAS SÃO CAMPOS DA TABELA SELECIONADA

SELECT
CAST(TRUNC(CAST(RDB$GET_CONTEXT(USER_SESSION, SEQ_TMP) AS NUMERIC(15,2))) AS INTEGER) SEQUENCIAL,
RDB$SET_CONTEXT(USER_SESSION, SEQ_TMP, CAST(CAST(RDB$GET_CONTEXT(USER_SESSION, SEQ_TMP) AS NUMERIC(15,2)) + 1 AS VARCHAR(25))) INCREMENTANDO,
CODIGO, CIDADE
FROM CIDADES
ORDER BY CIDADE
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar