Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Caio Cardoso

Exibir o ID da linha atraves de function

Recommended Posts

Srs,

bom dia.

 

Preciso exibir o ID fisico (do jeito que ele foi inserido na tabela) dos registros de uma tabela,

No Oracle existe a função ROWID() e ROWNUM(),

 

Ja tentei utilizar o ROW_NUMBER(), mas ele exige que seja informado uma ordenação e isso prejudicaria meu resultado.

 

 

Agradeço a ajuda,

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caio, qdo você diz o idfisico, seria a ordem que os dados foram inseridos?

Se sua tabela tiver uma chave pode-se ordenar por ela, ou por algum campo data (getdate(), se for o caso)

 

Se nao tiver chave nem nada, a cada select ele ira retornar os dados de uma modo.

 

Como nosso amigo supernoi falou, o ROW_NUMBER() foi a partir o SQL2005, então creio que sua base seja maior que isso.

De uma olhada em RANK, DENSE_RANK, NTILE que pode ser que te ajude.

 

Existe um modo se se exibir o numero de linhas por subselect, mas o resultado é o mesmo do ROW_NUMBER()

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao amigos,

 

estou utilizando o SQL 2005,

a tabela possui PK composta que são FK de outras 2 tabelas,

o que preciso é da ordem de como os registros foram gravados na tabela,

 

ja tentei todas essas funções, mas elas só funcionam com a clausula ORDER BY, e isso me prejudica,

eu lembro que no Oracle voce possui o ROWNUM e ROWID, o primeiro retorna a possição do registro na querie e o segundo na tabela, mas no SQL nao tem isso.

 

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caio, para exibicao do numero de linhas o SQL exige realmente um agredador.

Paleativo: Fazer como se faz no SQL2000:

declare @tbl TABLE (CODIGO INT, NOME VARCHAR(20))

INSERT INTO @tbl (CODIGO, NOME) VALUES (1,'NOME1')
INSERT INTO @tbl (CODIGO, NOME) VALUES (2,'NOME2')
INSERT INTO @tbl (CODIGO, NOME) VALUES (3,'NOME3')
INSERT INTO @tbl (CODIGO, NOME) VALUES (4,'NOME4')
INSERT INTO @tbl (CODIGO, NOME) VALUES (5,'NOME5')

SELECT
(SELECT COUNT(CODIGO) FROM @tbl AS T2 WHERE T2.CODIGO <= T1.CODIGO) AS Pos,
CODIGO, NOME
FROM @tbl AS T1

 

Ouuuuuu

POG:

Cria uma tabela temporaria com um campo identity e salva o select nela.... não recomendo isso, mas é uma solução!

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.