Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

fbislima

[Resolvido] Gerar contador baseado em algumas colunas de uma quer

Recommended Posts

Boa tarde amigos,

 

Alguem pode me dar uma ajudinha aqui.

 

 

Eu tenho uma tabela assim:

 

cod cod2 cod3

1 2 98

1 2 32

1 2 44

1 2 64

1 3 23

1 3 42

1 3 11

1 3 95

 

 

E gostaria de gerar uma query, utilizando select, incluindo uma coluna nova de sequencia como o exemplo abiaxo:

 

cod cod2 cod3 Seq

1 2 98 1

1 2 32 2

1 2 44 3

1 2 64 4

1 3 23 1

1 3 42 2

1 3 11 3

1 3 95 4

 

 

Alguem tem alguma ideia de como eu posso fazer isso?

 

Ps. estou utilizando um BD Oracle 10g.

 

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

select cod, cod2, cod3, '' Seq

from tabela

 

ou

 

select cod, cod2, cod3, rownum Seq

from tabela

 

a 1ª cria uma coluna virtual nula , na 2ª utiliza uma pseudocoluna rownum qye gera uma sequencia das colunas da sql.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não deu não.

 

A formatação do forum complicou tambem minha tabela de explicação.

 

Você percebeu que o numero sequencial leva em consideração os outros codigos?

 

Tipo, ele vai mantendo a contagem para o cod = 1 e cod2 = 2, quando chega no cod = 1 e cod2 = 2 ele inicializa o gerador denovo...

 

 

Acho que agora ficou melhor explicado.

 

 

Eu tenho uma tabela assim:

 

cod cod2 cod3

1 2 98

1 2 32

1 2 44

1 2 64

1 3 23

1 3 42

1 3 11

1 3 95

 

 

E gostaria de gerar uma query, utilizando select, incluindo uma coluna nova de sequencia como o exemplo abiaxo:

 

cod cod2 cod3 Seq

1 2 98 1

1 2 32 2

1 2 44 3

1 2 64 4

1 3 23 1

1 3 42 2

1 3 11 3

1 3 95 4

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Motta.

 

Eu utilizei DENSE_RANK e funcionou.

 

Segue abaixo um pequeno exemplo pra outros que tiverem futuras duvidas semelhantes a mim, e um link com algumas instruções de como utilizar ele.

 

http://www.devmedia.com.br/articles/viewcomp.asp?comp=4151

 

 

SELECT to_char( dtvenc, 'MM-YYYY') dtvenc, cdcontr, vlprest,

DENSE_RANK() OVER

(PARTITION BY to_char(dtvenc,'YYYYMM')

ORDER BY vlprest ) dense_rank

FROM vRECEBER

WHERE dtvenc > sysdate;

 

Abração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.