Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mehow

Vários COUNT no SELECT

Recommended Posts

Tenho que fazer um relatório porém não estou sabendo como fazer vários COUNTs e cada um tem uma condição

 

Tem que ser assim

mes----qtd_cheques----cheques_devolvidos----valor_duplicatas----dizimados

JAN-----------100 --------------5000.00---------------2000.00-----------1200.00

 

vai contar a quantidade de cheques, somar os devolvidos, somar duplicatas e somar dizimados

 

esse dados estão na minha tabela lote_itens, o cheque só é devolvido quando o campo statusdevolvido for = "S", só é duplicata se o numero do banco for = "010" e dizimados se o campo dizimado for = "S"

 

pro enquanto só consegui somar todos os cheques do mes e contar os cheques nesse

SELECT

MONTH(l.vencimento) as mes,

SUM(l.valor) as total_chq,

COUNT(*) as qtd_chq

FROM lote_itens l

WHERE DATE_FORMAT(vencimento, '%m') = '06'

ORDER BY l.vencimento ASC

 

 

é possível fazer um select para exibir os dados da maneira que mostrei?? quais funções devo usar para contar utilizando condições?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O uso da instrução CASE deve resolver este problema, pesquise por exemplos aqui neste site ou na documentação do BD.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O uso da instrução CASE deve resolver este problema, pesquise por exemplos aqui neste site ou na documentação do BD.

 

consegui contar os cheques devolvidos e duplicatas usando CASE, agora estou com dificuldade de somar um campo, a minha consulta está assim:

 

SELECT l.id_lote,l.emissao,l.vencimento,MONTH(l.vencimento) as mes,
SUM(l.valor) as total_chq,
COUNT(*) as qtd_chq,
COUNT(CASE WHEN l.statusdevolvido = 'S' THEN 1 ELSE NULL END) as devolvidos,
COUNT(CASE WHEN nro_banco = '010' THEN 1 ELSE NULL END)as duplicatas
FROM lote_itens l
WHERE  DATE_FORMAT(l.vencimento, '%m') = '06'
ORDER BY l.vencimento ASC

se eu colocar

SUM(CASE WHEN nro_banco = '010' THEN 1 ELSE NULL END)as valor_duplicata

só conta o numero de registros, não estou conseguindo somar o campo valor onde o numero do banco for = '010'

Compartilhar este post


Link para o post
Compartilhar em outros sites

SUM(CASE WHEN nro_banco = '010' THEN valor_duplicata ELSE 0 END)as valor_duplicata

Compartilhar este post


Link para o post
Compartilhar em outros sites

aah consegui, burrice a minha ¬¬

 

ficou assim

SUM(CASE WHEN nro_banco = '010' THEN l.valor ELSE NULL END)as valor_duplicatas

 

agora chequei na parte de calcular os juros, to achando que vo tentar fazer todos esses calculos na aplicação ao invés do BD

 

valew Motta

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.