- Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 10 anos atrás por rman.
Visualizando 2 posts - 1 até 2 (de 2 do total)
Visualizando 2 posts - 1 até 2 (de 2 do total)
- Você deve fazer login para responder a este tópico.
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?
@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. 🙂