Comando Row Number()

03/02/2015

0

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

Responder

Posts

03/02/2015

Joel Rodrigues

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

03/02/2015

Gislene Holgado

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()
Responder

03/02/2015

Isaac Jose

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...
Responder

03/02/2015

Gislene Holgado

Vou tentar fazer isso.
Obrigada
Responder

04/02/2015

Joel Rodrigues

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.
Responder

07/03/2019

Fagner Lopes

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

07/03/2019

Alex Lekao

É 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,
Responder

07/03/2019

Emerson Nascimento

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

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar