GARANTIR DESCONTO

Fórum (SQL) IBOConsole - FireBird - Erro Sql 104 #414622

27/03/2012

0

Bom dia pessoal, estou tentando utilizar a funcao sql ROW_NUMBER para criar uma classificacao de ranking em minha tabela.

Estou tentando classificar por quem tiver maior valor na coluna KILLS seje automaticamente sempre o acima do que tem menos.

A Tablea Sql:

CREATE TABLE RANK_KILLS
(
ID INT NOT NULL,
N1 VARCHAR(1),
PLAYER_NAME VARCHAR(30) NOT NULL,
N2 VARCHAR(1),
KILLS INT NOT NULL,
CONSTRAINT PK_RANK_KILLS PRIMARY KEY(ID)
);


Quero que quem tiver mais em KILLS , esteja classificado sempre superior ao que tem menos.

Estou tentando da seguinte forma, mas não ta dando certo:

SELECT ROW_NUMBER() OVER(ORDER BY KILLS DESC) AS RANK,
ID, N1, PLAYER_NAME, N2, KILLS
FROM RANK_KILLS
Jhonnatas F

Jhonnatas F

Responder

Posts

27/03/2012

Joel Rodrigues

Dá uma sacada nesse link, pode te ajudar:
http://www.firebirdfaq.org/faq343/
Boa sorte.
Responder

Gostei + 0

28/03/2012

Jhonnatas F

*************************************************
SELECT NEXT VALUE FOR tmp$rn AS RANK, ID, N1, N2
FROM RANK_KILLS
ORDER BY KILLS DESC, PLAYER_NAME[/code]
*************************************************

fiz, mas me gera um erro:

**********************************
ISC ERROR CODE:335544343

ISC ERROR MESSAGE:
invalid request BLR at offset 129
generator TMP$RN is not defined
**********************************

o que pode ser?
Responder

Gostei + 0

29/03/2012

Joel Rodrigues

É que nesse exemplo ele usa um generator, o que você não criou. Tente criar um generator que gera números sequenciais (de 1 em 1) com o nome citado. Tente também as outras formas citadas.

Boa sorte.
Responder

Gostei + 0

30/03/2012

Jhonnatas F

Como eu faço isso?

Não tenho muito conhecimento na área.

Obrigado pela atenção!
Responder

Gostei + 0

30/03/2012

Joel Rodrigues

Nesse link fica mais claro o que você precisa fazer:

http://tech.groups.yahoo.com/group/firebird-support/message/84004
Responder

Gostei + 0

30/03/2012

Joel Rodrigues

1) Cria o generator:

CREATE GENERATOR rownum;

2) Usa-o valor para numerar as linhas:
SELECT gen_id(rownum,1), T.Coluna1, T.Coluna2 FROM Tabela T ORDER BY T.Coluna1

3) Zera o generator após o uso:
SELECT gen_id(rownum, -gen_id(rownum, 0) FROM rdb$database

Espero que ajude. Boa sorte.
Responder

Gostei + 0

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

Aceitar