AJUDA COM CONSULTA SQL

FORMIGINHA 12/10/2011 21:25:42
#386515
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!
FORMIGINHA 14/10/2011 20:38:52
#386735
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.

XXXANGELSXXX 17/10/2011 23:36:22
#386900
  
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
RICART 18/10/2011 01:24:27
#386905
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]

FORMIGINHA 21/10/2011 22:00:39
#387386
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.
ALVAROVB2009 23/10/2011 09:19:39
#387479
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
RICART 23/10/2011 19:28:58
#387503
Resposta escolhida
Posta então a sql como ficou, acho que vc não entendeu.
ALVAROVB2009 24/10/2011 18:29:53
#387616
Formiguinha conseguiu resolver o problema com a solução q te passei?
Senão posta o q vc precisa
FORMIGINHA 30/10/2011 17:01:47
#388138
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
FORMIGINHA 01/11/2011 20:00:23
#388308
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...
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas