Pular para o conteúdo
  • Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 10 anos atrás por Avatar de rmanrman.
Visualizando 2 posts - 1 até 2 (de 2 do total)
  • Autor
    Posts
  • #107088
    Avatar de DouglasDouglas
    Participante

      Olá pessoal, novo aqui, me chamo Douglas e preciso de uma ajuda por favor,
      estou com uma dificuldade para somar e contar duas colunas na tabela. Eu quero contar o b.nr_seq_item e somar o vl_conta, sendo que a minha relação entre as tabelas é de 1 para n, no caso a.nr_sequencia (1) e b.nr_seq_item (n), o mesmo se aplica ao vl_conta.
      Eu uso o comando count(b.nr_seq_item) porem o mesmo me retorna erro e só consigo somar o atributo nr_seq_item, sem fazer relação com a outra tabela.

      SELECT
      a.nr_sequencia,
      a.dt_envio,
      a.dt_rec_destino,
      b.nr_seq_item,
      decode(a.ie_tipo_protocolo,'5',obter_valor_conta(b.nr_seq_interno,'0'),'') vl_conta

      FROM protocolo_documento a, protocolo_doc_item b

      WHERE a.dt_envio BETWEEN '01/10/2014' and '02/10/2014'
      AND a.nr_sequencia = b.nr_sequencia
      order by dt_envio

      Eu preciso de um valor parecido com o abaixo:

      nr_sequencia dt_envio dt_rec_destino nr_seq_item vl_conta

      123 01/11/2014 04/11/2014 20 $5.000,00

      ———-

      Mas só consigo o resultado a baixo

      nr_sequencia dt_envio dt_rec_destino nr_seq_item vl_conta

      123 01/11/2014 04/11/2014 8 $1.000,00
      123 01/11/2014 04/11/2014 2 $800,00
      123 01/11/2014 04/11/2014 4 $100,00
      123 01/11/2014 04/11/2014 6 $100,00

      Como posso usar o count e o sum corretamente?

      #107091
      Avatar de rmanrman
      Participante

        @Douglas

        COUNT e SUM são FUNCTION de agrupamento, isso quer dizer que são sempre acompanhadas de GROUP BY.


        SELECT
        a.nr_sequencia,
        a.dt_envio,
        a.dt_rec_destino,
        COUNT(b.nr_seq_item),
        SUM(decode(a.ie_tipo_protocolo,'5',obter_valor_conta(b.nr_seq_interno,'0'),'')) vl_conta
        FROM protocolo_documento a, protocolo_doc_item b
        WHERE a.dt_envio BETWEEN '01/10/2014' and '02/10/2014'
        AND a.nr_sequencia = b.nr_sequencia
        GROUP BY a.nr_sequencia,a.dt_envio,a.dt_rec_destino
        order by dt_envio

        Quais colunas devem ser listadas no GROUP BY?
        Todas as colunas que não utilizam FUNCTION de agrupamento. 🙂

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