SCRIPT FORMAS DE PAGAMENTO
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
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
Curtidas 0
Respostas
Leandro Chiodini
19/07/2020
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?
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?
GOSTEI 0
Gilson Silva
19/07/2020
Bom dia Leandro! Podeira postar um exemplo com uso do CASE? Agradeço a atenção.
GOSTEI 0
Emerson Nascimento
19/07/2020
se as tuas formas de pagamento forem fixas:
para indicar algo dinâmico é preciso saber qual o banco de dados utilizado.
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.
GOSTEI 0
Gilson Silva
19/07/2020
Boa tarde Emerson! esqueci de mencionar o banco que trabalho. É FIREBIRD 2.5
GOSTEI 0
Gilson Silva
19/07/2020
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
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
GOSTEI 0