AJUDA COM CONSULTA SQL
Pessoal tenho a sequinte SQL:
SELECT DISTINCT(tv.Vendedor),
count(tv.cod_venda) AS QTD,
sum(tv.Forma_Pag = [ô]Boleto[ô]) AS Boleto,
count(tr.Pago=[ô]Sim[ô]) as Pago,
sum(tv.Forma_Pag = [ô]Bol / CT[ô]) AS Bol_CT,
sum(tv.Forma_Pag = [ô]Bol / CQ[ô]) AS Bol_CQ,
sum(tv.Forma_Pag = [ô]Cartao[ô]) AS Cartao,
sum(tv.Forma_Pag = [ô]Cheque[ô]) AS Cheque,
sum(tv.Forma_Pag = [ô]Dinheiro[ô] ) AS Dinheiro,
sum(tv.Forma_Pag = [ô]financeira[ô] ) AS Financeira
FROM tab_venda tv, tab_receber tr
where tv.Data BETWEEN Dt_Inicio and Dt_Fim
and tr.Cod_Venda = tv.Cod_Venda
GROUP BY 1
ORDER BY count(2) DESC;
ela me retorna uma tabela parecida com a abaixo: ( a coluna boletos pagos nao ta correta )
_______________________________________________________________________________________________
| Vendedor | Qtd. Vendas | Qtd. Vend. Bol. | Qtd. Bol. Pagos | Qtd. Vend. Cartao | Qtd. Vend. Cheque | Financ. |
-----------------------------------------------------------------------------------------------------------------------------------------------
| Joao | 100 | 50 | 100 | 10 | 20 | 20 |
Teria que aparecer Assim:
_______________________________________________________________________________________________
| Vendedor | Qtd. Vendas | Qtd. Vend. Bol. | Qtd. Bol. Pagos | Qtd. Vend. Cartao | Qtd. Vend. Cheque | Financ. |
-----------------------------------------------------------------------------------------------------------------------------------------------
| Joao | 100 | 50 | 20 | 10 | 20 | 20 |
Alguem tem alguma solução ?
Desde Já Agradeço!
SELECT DISTINCT(tv.Vendedor),
count(tv.cod_venda) AS QTD,
sum(tv.Forma_Pag = [ô]Boleto[ô]) AS Boleto,
count(tr.Pago=[ô]Sim[ô]) as Pago,
sum(tv.Forma_Pag = [ô]Bol / CT[ô]) AS Bol_CT,
sum(tv.Forma_Pag = [ô]Bol / CQ[ô]) AS Bol_CQ,
sum(tv.Forma_Pag = [ô]Cartao[ô]) AS Cartao,
sum(tv.Forma_Pag = [ô]Cheque[ô]) AS Cheque,
sum(tv.Forma_Pag = [ô]Dinheiro[ô] ) AS Dinheiro,
sum(tv.Forma_Pag = [ô]financeira[ô] ) AS Financeira
FROM tab_venda tv, tab_receber tr
where tv.Data BETWEEN Dt_Inicio and Dt_Fim
and tr.Cod_Venda = tv.Cod_Venda
GROUP BY 1
ORDER BY count(2) DESC;
ela me retorna uma tabela parecida com a abaixo: ( a coluna boletos pagos nao ta correta )
_______________________________________________________________________________________________
| Vendedor | Qtd. Vendas | Qtd. Vend. Bol. | Qtd. Bol. Pagos | Qtd. Vend. Cartao | Qtd. Vend. Cheque | Financ. |
-----------------------------------------------------------------------------------------------------------------------------------------------
| Joao | 100 | 50 | 100 | 10 | 20 | 20 |
Teria que aparecer Assim:
_______________________________________________________________________________________________
| Vendedor | Qtd. Vendas | Qtd. Vend. Bol. | Qtd. Bol. Pagos | Qtd. Vend. Cartao | Qtd. Vend. Cheque | Financ. |
-----------------------------------------------------------------------------------------------------------------------------------------------
| Joao | 100 | 50 | 20 | 10 | 20 | 20 |
Alguem tem alguma solução ?
Desde Já Agradeço!
boa noite,
ainda nao deu certo colega... o resultado com essa sql foi:
Teria que aparecer Assim:
_______________________________________________________________________________________________
| Vendedor | Qtd. Vendas | Qtd. Vend. Bol. | Qtd. Bol. Pagos | Qtd. Vend. Cartao | Qtd. Vend. Cheque | Financ. |
-----------------------------------------------------------------------------------------------------------------------------------------------
| Joao | 80 | 80 | 80 | 10 | 20 | 20 |
Ou seja, repetiu as tres colunas... e contou apenas as pagas.
a primeira coluna tem que contar todas, independende se for paga ou nao e qualquer forma de pgto.
a segunda tem que contar todos que seja venda do tipo boleto,
a terceira a quantidade de vendas que o boleto foi pago
e as demais estao correta.
ainda nao deu certo colega... o resultado com essa sql foi:
Teria que aparecer Assim:
_______________________________________________________________________________________________
| Vendedor | Qtd. Vendas | Qtd. Vend. Bol. | Qtd. Bol. Pagos | Qtd. Vend. Cartao | Qtd. Vend. Cheque | Financ. |
-----------------------------------------------------------------------------------------------------------------------------------------------
| Joao | 80 | 80 | 80 | 10 | 20 | 20 |
Ou seja, repetiu as tres colunas... e contou apenas as pagas.
a primeira coluna tem que contar todas, independende se for paga ou nao e qualquer forma de pgto.
a segunda tem que contar todos que seja venda do tipo boleto,
a terceira a quantidade de vendas que o boleto foi pago
e as demais estao correta.
sum(tv.Forma_Pag = [ô]Boleto[ô]) AS Boleto,
count(tr.Pago=[ô]Sim[ô]) as Pago,
amigo.. que tipo de campo é esse? [ô]BOLETO[ô]??? varchar????, esse tr..pago=[Ô]sim.. tb é varchar??? se for vachar, tente utilizar o COUNT no lugar do SUM
Se entendi o que vc está querendo fazer, mude esse trecho
[txt-color=#e80000]count(tr.Pago=[ô]Sim[ô]) as Pago [/txt-color] para [txt-color=#e80000]sum(iif(tr.Pago=[ô]Sim[ô],1,0)) as Pago[/txt-color]
[txt-color=#e80000]count(tr.Pago=[ô]Sim[ô]) as Pago [/txt-color] para [txt-color=#e80000]sum(iif(tr.Pago=[ô]Sim[ô],1,0)) as Pago[/txt-color]
oa noite,
ainda nao deu certo colega... o resultado com essa sql foi:
Teria que aparecer Assim:
_______________________________________________________________________________________________
| Vendedor | Qtd. Vendas | Qtd. Vend. Bol. | Qtd. Bol. Pagos | Qtd. Vend. Cartao | Qtd. Vend. Cheque | Financ. |
-----------------------------------------------------------------------------------------------------------------------------------------------
| Joao | 80 | 80 | 80 | 10 | 20 | 20 |
Ou seja, repetiu as tres colunas... e contou apenas as pagas.
a primeira coluna tem que contar todas, independende se for paga ou nao e qualquer forma de pgto.
a segunda tem que contar todos que seja venda do tipo boleto,
a terceira a quantidade de vendas que o boleto foi pago
e as demais estao correta.
ainda nao deu certo colega... o resultado com essa sql foi:
Teria que aparecer Assim:
_______________________________________________________________________________________________
| Vendedor | Qtd. Vendas | Qtd. Vend. Bol. | Qtd. Bol. Pagos | Qtd. Vend. Cartao | Qtd. Vend. Cheque | Financ. |
-----------------------------------------------------------------------------------------------------------------------------------------------
| Joao | 80 | 80 | 80 | 10 | 20 | 20 |
Ou seja, repetiu as tres colunas... e contou apenas as pagas.
a primeira coluna tem que contar todas, independende se for paga ou nao e qualquer forma de pgto.
a segunda tem que contar todos que seja venda do tipo boleto,
a terceira a quantidade de vendas que o boleto foi pago
e as demais estao correta.
Formiguinha estou tomando base que o seu cod_venda, seja o campo primário da sua tabela
SELECT tv.Vendedor,
count(tv.cod_venda) AS QTD,
sum(if(tv.Forma_Pag = [ô]Boleto[ô],1,0)) AS Boleto,
count(tr.Pago=[ô]Sim[ô]) as Pago, Substitua por -> sum(if(tr.Pago=1,1,0)) se esse campo for int ou se for varchar idem anterior sum(if(tr.Pago=[ô]Sim[ô],1,0)) AS Pago,
sum(tv.Forma_Pag = [ô]Bol / CT[ô]) AS Bol_CT,
sum(tv.Forma_Pag = [ô]Bol / CQ[ô]) AS Bol_CQ,
sum(tv.Forma_Pag = [ô]Cartao[ô]) AS Cartao,
sum(tv.Forma_Pag = [ô]Cheque[ô]) AS Cheque,
sum(tv.Forma_Pag = [ô]Dinheiro[ô] ) AS Dinheiro,
sum(tv.Forma_Pag = [ô]financeira[ô] ) AS Financeira
FROM tab_venda tv, tab_receber tr
where tv.Data BETWEEN Dt_Inicio and Dt_Fim
and tr.Cod_Venda = tv.Cod_Venda
GROUP BY 1
ORDER BY count(2) DESC;
Acho que isso pode te ajudar, eu fiz um teste com uma tabela que tenho aki e trouxe o resultado com o que vc precisa, total gerado, o que é boleto e o q foi pago
SELECT tv.Vendedor,
count(tv.cod_venda) AS QTD,
sum(if(tv.Forma_Pag = [ô]Boleto[ô],1,0)) AS Boleto,
count(tr.Pago=[ô]Sim[ô]) as Pago, Substitua por -> sum(if(tr.Pago=1,1,0)) se esse campo for int ou se for varchar idem anterior sum(if(tr.Pago=[ô]Sim[ô],1,0)) AS Pago,
sum(tv.Forma_Pag = [ô]Bol / CT[ô]) AS Bol_CT,
sum(tv.Forma_Pag = [ô]Bol / CQ[ô]) AS Bol_CQ,
sum(tv.Forma_Pag = [ô]Cartao[ô]) AS Cartao,
sum(tv.Forma_Pag = [ô]Cheque[ô]) AS Cheque,
sum(tv.Forma_Pag = [ô]Dinheiro[ô] ) AS Dinheiro,
sum(tv.Forma_Pag = [ô]financeira[ô] ) AS Financeira
FROM tab_venda tv, tab_receber tr
where tv.Data BETWEEN Dt_Inicio and Dt_Fim
and tr.Cod_Venda = tv.Cod_Venda
GROUP BY 1
ORDER BY count(2) DESC;
Acho que isso pode te ajudar, eu fiz um teste com uma tabela que tenho aki e trouxe o resultado com o que vc precisa, total gerado, o que é boleto e o q foi pago
Posta então a sql como ficou, acho que vc não entendeu.
Formiguinha conseguiu resolver o problema com a solução q te passei?
Senão posta o q vc precisa
Senão posta o q vc precisa
ainda não consegui amigo..
veja os prints..
http://www.ucrj.net/VBmania/1.JPG
http://www.ucrj.net/VBmania/2.JPG
http://www.ucrj.net/VBmania/3.JPG
http://www.ucrj.net/VBmania/5.JPG
veja os prints..
http://www.ucrj.net/VBmania/1.JPG
http://www.ucrj.net/VBmania/2.JPG
http://www.ucrj.net/VBmania/3.JPG
http://www.ucrj.net/VBmania/5.JPG
eu dei uma analizada nos resultados e cheguei a seguinte conclusao...
a cada venda é gerada algumas parcelas podendo variar de 1 á 10.
o vendedor citado acima tem 106 vendas e se multiplicar pelos boletos da os 700 e um pouquinho...
eu teria q fazer algum jeito de agrupar os boletos por venda.
entenderao ?
acho q uma PRC seria a solução com o loop... porem nunca fiz antes...
a cada venda é gerada algumas parcelas podendo variar de 1 á 10.
o vendedor citado acima tem 106 vendas e se multiplicar pelos boletos da os 700 e um pouquinho...
eu teria q fazer algum jeito de agrupar os boletos por venda.
entenderao ?
acho q uma PRC seria a solução com o loop... porem nunca fiz antes...
Tópico encerrado , respostas não são mais permitidas