Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 8 anos, 5 meses atrás por Avatar de Natanael AmaroNatanael Amaro.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #108206
    Avatar de Walner AndersonWalner Anderson
    Participante

      Boa tarde pessoal estou com um problema em um código aqui de um trabalho que estou realizando.
      preciso dividir uma tabela que é de um estacionamento de veículos onde eu tenho a tabela inicial na seguinte situação como exemplo:

      placa | tipo_Movimentação|
      AAA0000 Entrada
      AAA0000 Saida
      AAA0000 Entrada
      AAA0000 Saida
      AAA0000 entrada
      AAA0000 Saida
      AAA0000 Saida

      já eu quero que eu obtenha esta table de tipo_Movimentação da seguinte forma

      placa | tipo_saida| tipo_entrada|
      AAA0000 Saida Entrada
      AAA0000 Saida Entrada
      AAA0000 Saida
      AAA0000 Saida Entrada
      AAA0000 Saida Entrada

      se poderem me ajudar neste problema agradecerei muito, pois estou perdendo um grande tempo neste
      código.

      tentei usar o Decode mais não deu muito certo

      #108207
      Avatar de spernegaspernega
      Participante

        Bom dia,

        Tente alguma coisa assim:

        Select placa, sum(Decode(tipo_Movimentacao,’E’,1,0)) Entrada, sum(Decode(tipo_Movimentacao,’S’,1,0)) Saida
        from tabela
        group by placa;

        Não sei se é exatamente isso que você precisa…

        #108208
        Avatar de Natanael AmaroNatanael Amaro
        Participante

          Walner Anderson

          Tive estudando um pouco o seu problema, a melhor solução encontrada foi via PL/SQL,

          Você só precisa alterar a tabela onde serão inseridas as linhas, e o status de select dos
          cursores, para “ENTRADA” ou “SAÍDA”,


          CREATE OR REPLACE PROCEDURE PROC_TESTE
          IS
          a NUMBER (30); --Quantidade de registros do count.
          tipo VARCHAR2(30);
          id VARCHAR2(30);
          CURSOR c1 IS
          SELECT tipo_movimentacao FROM estacionamento WHERE tipo_movimentacao LIKE 'Saida' ORDER BY placa;
          CURSOR c2 IS
          SELECT COUNT(*) FROM estacionamento WHERE tipo_movimentacao LIKE 'Saida';
          CURSOR c3 IS
          SELECT placa FROM estacionamento WHERE tipo_movimentacao LIKE 'Saida';
          BEGIN
          OPEN c1;
          OPEN c2;
          OPEN c3;
          FETCH c2 INTO a;
          FOR i IN 1 .. a LOOP
          FETCH c1 INTO tipo;
          FETCH c3 INTO id;
          INSERT INTO estacionamento (tipo_saida, data) VALUES (tipo, sysdate);
          INSERT INTO estacionamento (placa) VALUES (id);
          COMMIT;
          END LOOP;
          CLOSE c1;
          CLOSE c2;
          CLOSE c3;
          END;
          /

          Espero ter ajudado,

          Regards, Amaro.

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress