Comando Row Number()

SQL Server

03/02/2015

Gostaria que a sentença abaixo representasse os meses em coluna, empregando o comando row number() é possivel?

SELECT DISTINCT CODCFO, VALORORIGINAL, MONTH(DATAEMISSAO) MES$,
ROW_NUMBER() OVER (ORDER BY valororiginal)AS LINHA FROM FLAN

WHERE CODCOLIGADA = 1 AND CODFILIAL = 3911 AND CODRECEITA LIKE '1708%'
AND DATAEMISSAO >= '2014-01-01' AND DATAEMISSAO <= '2014-12-31'
AND VALORIRRF > 0


ORDER BY CODCFO, MES$, 2

O resultado dessa sentença apresenta:

Fornec valor mes linha
000019 1320.0000 10 32
000117 891.7600 1 7
000117 891.7600 2 8
000117 891.7600 3 13
000117 891.7600 4 16
000117 891.7600 5 14
000117 878.3800 6 4
000117 891.7600 6 17
000117 891.7600 7 9
000117 891.7600 8 15
000117 878.3800 9 5
000117 891.7600 9 10
000117 891.7600 10 18
000117 891.7600 11 11
000117 891.7600 12 12
002169 11620.0000 1 69
002169 15600.0000 6 75
002169 5000.0000 11 55
002169 19369.0000 11 77
002169 19369.0000 12 76
002683 1260.0000 6 31
002683 2000.0000 6 52
004190 1014.0800 7 21
004190 1014.0800 7 23
004190 1014.0000 8 20
004190 1014.0800 8 26
004190 1014.0800 9 24
004190 1014.0800 10 22
004190 1014.0800 11 27
004190 1014.0800 12 25
004219 1357.2000 1 34
004219 1131.0000 2 28
004219 1244.1000 3 30
004219 1357.2000 4 35
004219 1327.5900 5 33
004219 1568.9700 6 45
004219 1519.2200 7 42
004219 1448.2800 8 39
004219 1568.9700 9 43
004219 496.6300 10 1
004219 1568.9700 10 44
004219 1689.6600 11 47
004219 1448.2800 12 40
005837 813.0000 10 3
007099 1875.0000 5 49
007099 1875.0000 5 50
007815 1493.6000 5 41
007815 13442.4000 5 72
007815 13442.4000 5 73
007815 13442.4000 5 74
007815 2871.6000 7 53
008772 923.6500 3 19
008836 1790.0000 1 48
009325 5500.0000 3 56
009325 12700.0000 4 71
009325 6438.7500 6 57
009325 7500.0000 6 60
009325 6438.7500 7 58
009325 7500.0000 7 61
009325 7500.0000 8 65
009325 7500.0000 9 62
009325 7500.0000 9 64
009325 10800.0000 10 68
009325 7500.0000 11 63
009325 7500.0000 12 66
009587 1200.0000 4 29
009588 1950.0000 6 51
009713 880.0000 7 6
009847 1380.9000 9 37
009847 1401.9300 9 38
009847 1574.0400 10 46
009883 12444.3000 6 70
010126 22034.2200 12 78
010126 55085.5600 12 79
010126 55085.5600 12 80
010126 55085.5600 12 81
010126 55085.5600 12 82
010164 3000.0000 7 54
010262 751.0000 8 2
010548 9600.0000 9 67
010548 7200.0000 11 59
010815 1370.0000 10 36



muito obrigada pelo help...
Gislene Holgado

Gislene Holgado

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

03/02/2015

O objetivo do ROW_NUMBER() é numerar as linhas, acredito que você esteja precisando do comando PIVOT. Pesquise a respeito.
GOSTEI 0
Gislene Holgado

Gislene Holgado

03/02/2015

Olá Joel, foi minha primeira tentativa, porem ao copiar a sentença pra aplicação, gerar relatorios, deu conflito no sql. O comando pivot nao roda na compatibilidade 80 do banco de dados. Eu rodei o alter table numa base de teste no banco, mas quando fui rodar na aplicação nem abriu o aplicativo.
Por isso tentei o row_number()
GOSTEI 0
Isaac Jose

Isaac Jose

03/02/2015

Gislene. faça a como o outro que te falei.. crie as coluna e utilize o update... mesmo que a principio nao seja o seu objetivo.. mais pelo menos vc ja consegue atender a sua demanda e com mais tempo vc volta com as outras...
GOSTEI 0
Gislene Holgado

Gislene Holgado

03/02/2015

Vou tentar fazer isso.
Obrigada
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

03/02/2015

Recentemente enfrentei esse problema de compatibilidade e para resolver tive que criar uma tabela temporária com as colunas que eu desejava, como o amigo sugeriu acima.
Você pode alterar o nível de compatibilidade do banco, mas não sei se sua engine de acesso cai suportar. No meu caso, era a BDE do Delphi que não suportava o nível 90.
GOSTEI 0
Fagner Lopes

Fagner Lopes

03/02/2015

É possível definir um valor inicial para a funcao ROW_NUMBER() ?
Preciso que a numeração inicie em 1001.
GOSTEI 0
Alex Lekao

Alex Lekao

03/02/2015

É possível definir um valor inicial para a funcao ROW_NUMBER() ?
Preciso que a numeração inicie em 1001.


Oi Fagner, bom dia!!!

Acredito que não, uma vez que o Row Number mostra o numero da linha do registro retornado pelo select.

Você teria que fazer algum outro tipo de execução.

Sugiro abrir um novo tópico para a sua duvida.

Atenciosamente,
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

03/02/2015

tente assim:

SELECT DISTINCT
	CODCFO, VALORORIGINAL, MONTH(DATAEMISSAO) MES,
	1000 + (ROW_NUMBER() OVER (ORDER BY valororiginal)) AS LINHA
FROM
	FLAN
WHERE
	CODCOLIGADA = 1 AND CODFILIAL = 3911 AND CODRECEITA LIKE '1708%'
	AND DATAEMISSAO >= '2014-01-01' AND DATAEMISSAO <= '2014-12-31'
	AND VALORIRRF > 0
ORDER BY
	valororiginal

GOSTEI 0
POSTAR