Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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?
>
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'
SUM(CASE WHEN nro_banco = '010' THEN valor_duplicata ELSE 0 END)as valor_duplicata
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
Em geral usar FUNCTIONS ajuda nestes casos.
Dica esplendida, me ajudou muiiiiito!
O uso da instrução CASE deve resolver este problema, pesquise por exemplos aqui neste site ou na documentação do BD.