Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
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
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
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!
Boa tarde,
ROW_NUMBER() só para a partir de 2005...
Qual é a versão da sua base?