SCRIPT FORMAS DE PAGAMENTO

19/07/2020

0

Boa noite, o script abaixo me dá um relatorio das vendas de todos vendedores por formas de pagamento separadas. Gostaria
de saber como obter esse mesmo relatorio com os totais com as colunas formas de pagamento e o total exemplo:

VENDEDOR NOME DINHEIRO(01) APRAZO(02) CARTAO(05) CHEQUE(03) TOTAL
005 ADRIANA 7.658,00 12.332,11 4.561,40 0,00 24.551,51


SELECT FT.vendedor,VD.NOME,FT.OPERACAO,FO.DESCRICAO, SUM(LIQUIDO) AS TOTAL FROM FATURAS FT
INNER JOIN VENDEDOR VD ON FT.vendedor=VD.cod_ven INNER JOIN formas FO ON FT.operacao=FO.CODIGO
WHERE (FT.EMISSAO BETWEEN :data1 and :data2) AND FT.STATUS='P' group by FT.vendedor,VD.NOME,FT.OPERACAO,FO.DESCRICAO
ORDER BY VD.NOME
Gilson Silva

Gilson Silva

Responder

Posts

22/07/2020

Leandro Chiodini

Bom dia Gilson
Eu utilizaria um CASE WHEN
para montagem das colunas e somar de acordo com a "Operação" ou forma de pagamento.
Você já usou este recurso?
Responder

23/07/2020

Gilson Silva

Bom dia Leandro! Podeira postar um exemplo com uso do CASE? Agradeço a atenção.
Responder

24/07/2020

Emerson Nascimento

se as tuas formas de pagamento forem fixas:
SELECT
	FT.vendedor,VD.NOME,FT.OPERACAO,
	SUM(CASE WHEN FO.CODIGO=1 THEN LIQUIDO ELSE 0 END) CODIGO1,
	SUM(CASE WHEN FO.CODIGO=2 THEN LIQUIDO ELSE 0 END) CODIGO2,
	SUM(CASE WHEN FO.CODIGO=3 THEN LIQUIDO ELSE 0 END) CODIGO3,
	SUM(CASE WHEN FO.CODIGO=4 THEN LIQUIDO ELSE 0 END) CODIGO4,
	SUM(LIQUIDO) TOTAL
FROM
	FATURAS FT
INNER JOIN
	VENDEDOR VD ON VD.cod_ven = FT.vendedor
INNER JOIN
	formas FO ON FO.CODIGO = FT.operacao
WHERE
	(FT.EMISSAO BETWEEN :data1 and :data2)
	AND FT.STATUS='P'
GROUP BY
	FT.vendedor,VD.NOME,FT.OPERACAO,FO.DESCRICAO
ORDER BY
	VD.NOME

para indicar algo dinâmico é preciso saber qual o banco de dados utilizado.
Responder

24/07/2020

Gilson Silva

Boa tarde Emerson! esqueci de mencionar o banco que trabalho. É FIREBIRD 2.5
Responder

27/07/2020

Gilson Silva

Bom dia! Emerson fiz somente um ajuste no script e fiou do jeito que eu queria. Muito obrigado a todos.

SELECT
FT.vendedor,VD.NOME,
SUM(CASE WHEN OPERACAO=01 THEN LIQUIDO ELSE 0 END) DINHEIRO,
SUM(CASE WHEN OPERACAO=02 THEN LIQUIDO ELSE 0 END) PRAZO,
SUM(CASE WHEN OPERACAO=03 THEN LIQUIDO ELSE 0 END) CHEQUEAV,
SUM(CASE WHEN OPERACAO=04 THEN LIQUIDO ELSE 0 END) CHEQUEAP,
SUM(CASE WHEN OPERACAO=05 THEN LIQUIDO ELSE 0 END) CARTAO,
SUM(LIQUIDO) TOTAL
FROM
FATURAS FT
INNER JOIN
VENDEDOR VD ON VD.cod_ven = FT.vendedor
WHERE
(FT.EMISSAO BETWEEN :data1 and :data2)
AND FT.STATUS='P'
GROUP BY
FT.vendedor,VD.NOME
ORDER BY
VD.NOME
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar