Prosseguir com sequencia

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
jks1903
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 188
Registrado em: Qui, 04 Fev 2010 8:08 am

Pessoal, estou com um problema para implementar uma lógica em uma query, na verdade um update, e queria ver se alguém tem uma ideia ou se já implantou algo parecido.

Tenho uma tabela que possui um campo cd_remessa e outro campo cd_item.

cada remessa pode possuir vários itens, por exemplo:

Selecionar tudo

remessa     item
=================
1                   1
1                   2
1                   3
2                   1
2                   2
2                   3
Esse item é simplesmente um "contador de itens" da remessa, ou seja, ao mudar a remessa o item será 1 novamente.

O que ue preciso fazer é unir cerca de 50 remessas em uma só, seguindo com a sequencia do campo item. Aí encontra-se o meu problema, não estou conseguindo montar uma lógica para seguir a numeração dos itens.

Se alguém puder me ajudar ficarei grato.

Obrigado desde já.
jks1903
Rank: DBA Júnior
Rank: DBA Júnior
Mensagens: 188
Registrado em: Qui, 04 Fev 2010 8:08 am

Fazendo uns testes aqui eu consegui, não sei se é a melhor forma mas resolveu meu problema.

No update, juntamente com o update da remessa, eu fiz um update no item, fazendo cd_item = ROWNUM, e ficou perfeito.

Caso alguém mais precise de algo semelhante fica o tópico.

Vlw.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Se lhe ajudar, dá uma olhada neste código, com uma tabela que montei fictícia:

Selecionar tudo


with cSeq as (select 1 as cod
                from dual
              union all
              select 1 as cod
                from dual
              union all
              select 2 as cod
                from dual
              union all
              select 2 as cod
                from dual
              union all
              select 2 as cod
                from dual
              union all
              select 3 as cod
                from dual )
select cseq.cod, 
       RANK() OVER (PARTITION BY cseq.cod order by rownum desc) "rank"
  from cseq  
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes