(SQL) IBOConsole - FireBird - Erro Sql 104
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:
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:
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
Curtidas 0
Respostas
Joel Rodrigues
27/03/2012
Dá uma sacada nesse link, pode te ajudar:
http://www.firebirdfaq.org/faq343/
Boa sorte.
http://www.firebirdfaq.org/faq343/
Boa sorte.
GOSTEI 0
Jhonnatas F
27/03/2012
*************************************************
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?
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?
GOSTEI 0
Joel Rodrigues
27/03/2012
É 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.
Boa sorte.
GOSTEI 0
Jhonnatas F
27/03/2012
Como eu faço isso?
Não tenho muito conhecimento na área.
Obrigado pela atenção!
Não tenho muito conhecimento na área.
Obrigado pela atenção!
GOSTEI 0
Joel Rodrigues
27/03/2012
Nesse link fica mais claro o que você precisa fazer:
http://tech.groups.yahoo.com/group/firebird-support/message/84004
http://tech.groups.yahoo.com/group/firebird-support/message/84004
GOSTEI 0
Joel Rodrigues
27/03/2012
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.
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.
GOSTEI 0