Ir para conteúdo

POWERED BY:

Arquivado

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

r.guerra

Consulta para relatorio

Recommended Posts

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

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

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

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

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

×

Informação importante

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