fbislima 0 Denunciar post Postado Julho 3, 2009 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
Motta 645 Denunciar post Postado Julho 3, 2009 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
fbislima 0 Denunciar post Postado Julho 3, 2009 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
Motta 645 Denunciar post Postado Julho 3, 2009 Acho que alguma das Analict Functions http://download.oracle.com/docs/cd/B19306_...s001.htm#i81407 RANK,DENSE RANK etc podem fazer isto. Nunca usei isto mas sei que tem bastantes recursos. Compartilhar este post Link para o post Compartilhar em outros sites
fbislima 0 Denunciar post Postado Julho 6, 2009 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