Estou precisando de uma ajuda com uma consulta MySql, na verdade não tentei fazer ela ainda porque estou com muito serviço e tenho que entregar isso rápido para me "livrar de um cliente".
Vou relatar aqui e vou disponibilizar um esboço da modelagem no excel mesmo, a modelagem no excel está como se fosse Java.
O problema é o seguinte, o sistema é para uma associação.
Ela faz o lote de coleta, que é o lote que envia as doações para cobrança com o mensageiro(office boy) e as doações ficam em status(situaçãoDoacao- em coleta).
O mensageiro ao retornar, é feito o lote de retorno dessas doações, podendo voltar: Recebida, Recebida com alteração de valor, Cancelada, Confirmada(onde será feita nova coleta).
A associação trabalha com um fechamento mensal de doações, onde ela apura a última situação da doação no período.
É Essa apuração que preciso fazer, saber qual a situação da doação por período, de modo que saiba o quanto cada operadora fez de forma agrupada e detalhada.
Estou encaminhando o modelo dos relatórios também para embasamento.
Preciso de uma consulta otimizada, onde não tenha que fazer várias para fazer um relatório.
Segue uma consulta que estava tentando fazer, pra servir de base:
1-detalhada
SELECT
operador.id,
operador.cod AS codOperador,
operador.nome AS nomeOperador,
d.vr,
partDoador.cod AS codDoador,
partDoador.nome AS nomeDoador,lrd.situacaodoacao AS situacaoDoacao,
lrd.dtBaixa AS dtRecebimento FROM Doacao d
left join doacaoloteretorno dlr on
dlr.Iddoacao=d.id
left join loterectodoacao lrd on
lrd.id=dlr.Idloteretornodoacao
left join funcionario operador on
operador.id=d.Idoperresponsavel
left join lotedoacao ld on
ld.id=d.Idlotedoacao
left join participante partdoador on
ld.idPartDoador=Partdoador.id
left join transacaoconta transbaixa on
transbaixa.id=lrd.idTransBaixa
WHERE operador.idPartGer=1
AND lrd.Dtbaixa between "2018-12-01" and "2018-12-31"
order by
operador.nome,lrd.situacaoDoacao;
2- agrupada
SELECT
operador.cod AS codOperador,
operador.nome AS nomeOperador,SUM(
d.vr) AS vrSomaDoacoes,lrd.situacaodoacao AS situacaoDoacao
FROM Doacao d
left join doacaoloteretorno dlr on
dlr.Iddoacao=d.id
left join loterectodoacao lrd on
lrd.id=dlr.Idloteretornodoacao
left join funcionario operador on
operador.id=d.Idoperresponsavel
left join lotedoacao ld on
ld.id=d.Idlotedoacao
left join participante partdoador on
ld.idPartDoador=partDoador.id
WHERE operador.idPartGer=1
And lrd.dtbaixa between "2018-12-01" and "2018-12-31"
group by
operador.cod,lrd.Situacaodoacao
order by
operador.nome,d.situacaoDoacao;
Nessas consultas não está pegando a última e sim todas situações do período. Quero a última apenas, detalhado e agrupado.
LoteRectoDoacao = LoteRetornoDoacao
Edit()
Preciso agrupar por ultima situação da doação, seja ela em lotecoleta(dtColeta) ou loterectoDoacao/loteretornodoacao (dtBaixa). Quando estiver em lote de coleta a situação será sempre em coleta, quando a última situação no período estiver no loterectodoacao/loteretornodoacao será necessário pegar a situação que estiver nele.
Prazo de Entrega: 29 de Novembro de 2018