r.guerra 0 Denunciar post Postado Setembro 21, 2016 Fala galera bão d+? seguinte, to tentando fazer um relatório aqui mas to tomando um pau arrumado com a sintaxe mysql e queria ouvir a opinião de voces. tenho uma tabela com esta estrutura. codigo --- unidade ---- dentista ----valor ------- forma ---- total calculado 1 1 1 100.00 Cartão C 95,50 2 1 1 90.00 cartao c 87,30 3 2 5 250.00 cartao c 235,00 4 1 2 800.00 cartao c 787,00 5 1 1 1500.00 cartao d 1488,00 6 1 1 2500.00 cartao 2488,00 preciso de um relatorio que me traga em cada linha um dentista e o total recebido (valor) de cada forma de pagamento e o total liquido (total calculado), da mesma unidade. tipo assim: dentista cartao cartao c cartao d total recebido bruto total liquido 1 2488,00 182,80 1488,00 4190.00 4158.80 2 0.00 787.00 0.00 800.00 787.00 ai fiz minha sintaxe da seguinte forma: SELECT * FROM financeiro WHERE unidade='$unidade' AND data BETWEEN '$inicio' AND '$termino' AND operacao='1' AND forma !='DINHEIRO' GROUP BY forma, dentista ORDER BY dentista ASC mas não deu certo. desta forma tras bonitinho os dentistas para cada forma de pagamento, mas o calculo não fica certo. Uso PHP. alguém consegue me dar uma direção com exemplo? VLW galera!!!! Ah, na tabela existe um campo data eu esqueci aqui, kkkk Compartilhar este post Link para o post Compartilhar em outros sites
ygor.anjos 23 Denunciar post Postado Setembro 21, 2016 SELECT *,SUM(valor) as valorTotal FROM financeiro WHERE unidade='$unidade' AND data BETWEEN '$inicio' AND '$termino' AND operacao='1' AND forma !='DINHEIRO' GROUP BY forma, dentista ORDER BY dentista ASC adicionei o SUM para somar, n sei se vai funcionar assim, acredito que vai precisar arrumar o WHERE em algum ponto para somar certo Compartilhar este post Link para o post Compartilhar em outros sites
r.guerra 0 Denunciar post Postado Setembro 21, 2016 SELECT *,SUM(valor) as valorTotal FROM financeiro WHERE unidade='$unidade' AND data BETWEEN '$inicio' AND '$termino' AND operacao='1' AND forma !='DINHEIRO' GROUP BY forma, dentista ORDER BY dentista ASC adicionei o SUM para somar, n sei se vai funcionar assim, acredito que vai precisar arrumar o WHERE em algum ponto para somar certo VLW Igor, mas acho qeu não dará. preciso que traga a somatória do campo valor e do campo total_calculado, sendo que cada dentista e forma seja exibida. Já tentei a sintaxe acima e nao deu. Mas obrigado pela dica! Compartilhar este post Link para o post Compartilhar em outros sites
ygor.anjos 23 Denunciar post Postado Setembro 21, 2016 faz pelo PHP então. faz um while maior(dentista) e um while menor (forma) pra cada dentista ele analisa a forma de pagamento e vai salvando em uma variavel, depois só mostrar na tela. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 21, 2016 Veja se ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
r.guerra 0 Denunciar post Postado Setembro 21, 2016 Veja se ajuda. eu consigo usar o SUM() mais de uma vez dentro de uma mesma query? poderia me dar um exemplo? Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 21, 2016 algo assim select dentista, sum(case when forma = 'cartao c' then valor else 0 end) cartao_c, sum(case when forma = 'cartao d' then valor else 0 end) cartao_d, sum(case when forma = 'cartao e' then valor else 0 end) cartao_e, ... sum(case when forma = 'cartao z' then valor else 0 end) cartao_z from tabela group by denttista O ruim com CASE ou PIVOT é que as colunas são fixas se aparecer outro "tipo" não seria tratado. Compartilhar este post Link para o post Compartilhar em outros sites
r.guerra 0 Denunciar post Postado Setembro 21, 2016 consegui resolver assim: SELECT * ,SUM(total_calculado) as t, SUM(valor) AS total, SUM(total_calculado / 2) AS dividido FROM financeiro WHERE unidade='$unidade' AND data BETWEEN '$inicio' AND '$termino' AND operacao='1' AND forma !='DINHEIRO' GROUP BY forma, dentista ORDER BY dentista ASC VLW galera! Compartilhar este post Link para o post Compartilhar em outros sites