× Linguagem de Programação ADVPL

Perguntas Duvida Relatório ADVPL - TReport

Mais
11 anos 4 meses atrás #15121 por henry.charriere
Pessoal, Boa Tarde! Estou com uma dúvida aqui na confecção de um rel.

Precisava fazer um somatório, mas não consegui com as funções do advpl/treport.

Tive que fazer um ajeito técnico. Só consegui fazer minha somatoria bater depois desse UNION ai em baixo.
Alguém sabe alguma forma de fazer isso elegantemente? Alguma forma de setar valores no rel. fazer o somatório?

SELECT %Exp:cAgreg%, SUM(Z16_QTNAT) Z16_QTNAT,
CASE WHEN SUM(Z16_QTNAT) = 0 THEN 0 ELSE SUM(Z16_PMNAT) / SUM(Z16_QTNAT) END AS Z16_PMNAT, SUM(Z16_QTENAT) Z16_QTENAT,
CASE WHEN SUM(Z16_QTENAT) = 0 THEN 0 ELSE SUM(Z16_PMEMB) / SUM(Z16_QTENAT) END AS Z16_PMEMB, SUM (Z16_QTLIQ) Z16_QTLIQ,
CASE WHEN SUM (Z16_QTLIQ) = 0 THEN 0 ELSE SUM(Z16_PMLIQ) / SUM(Z16_QTLIQ) END AS Z16_PMLIQ,
SUM(DCMDCO) AS DCMDCO,SUM(QTDEV) QTDEV,SUM(QTBONI) QTBONI,SUM(QTREP) QTREP,SUM(QTDBAGEM) QTDBAGEM,SUM(VLRDB) VLRDB, ISNULL(COUNT(DISTINCT CLIENTE), 0) CLIENTE
FROM (
SELECT UPPER(A3_NREDUZ) A3_NREDUZ, Z16_CAT, Z16_QTNAT, (Z16_QTNAT * Z16_PMNAT) Z16_PMNAT, Z16_QTENAT, (Z16_QTENAT * Z16_PMEMB) Z16_PMEMB, Z16_QTLIQ, (Z16_QTLIQ * Z16_PMLIQ) Z16_PMLIQ, DCMDCO, Z16_QTDEV QTDEV, Z16_QTBONI QTBONI, Z16_QTREP QTREP, Z16_DBAGEM QTDBAGEM, Z16_VLRDB VLRDB, (SELECT DISTINCT A1_COD FROM SA1010 WHERE A1_COD = Z16_CLIENT) CLIENTE
FROM FATMENSAL
INNER JOIN SA3010 ON Z16_VEND = A3_COD
INNER JOIN SX5010 ON X5_TABELA = 'A2' AND Z16_REGEST = X5_CHAVE AND X5_FILIAL = '01'
WHERE %Exp:cParam%

) B
GROUP BY %Exp:cAgreg%


UNION ALL

SELECT %Exp:cAgregSoma%, SUM(Z16_QTNAT) Z16_QTNAT,
CASE WHEN SUM(Z16_QTNAT) = 0 THEN 0 ELSE SUM(Z16_PMNAT) / SUM(Z16_QTNAT) END AS Z16_PMNAT, SUM(Z16_QTENAT) Z16_QTENAT,
CASE WHEN SUM(Z16_QTENAT) = 0 THEN 0 ELSE SUM(Z16_PMEMB) / SUM(Z16_QTENAT) END AS Z16_PMEMB, SUM (Z16_QTLIQ) Z16_QTLIQ,
CASE WHEN SUM (Z16_QTLIQ) = 0 THEN 0 ELSE SUM(Z16_PMLIQ) / SUM(Z16_QTLIQ) END AS Z16_PMLIQ,
SUM(DCMDCO) AS DCMDCO,SUM(QTDEV) QTDEV,SUM(QTBONI) QTBONI,SUM(QTREP) QTREP,SUM(QTDBAGEM) QTDBAGEM,SUM(VLRDB) VLRDB, ISNULL(COUNT(DISTINCT CLIENTE), 0) CLIENTE
FROM (
SELECT A3_NREDUZ, Z16_CAT, Z16_QTNAT, (Z16_QTNAT * Z16_PMNAT) Z16_PMNAT, Z16_QTENAT, (Z16_QTENAT * Z16_PMEMB) Z16_PMEMB, Z16_QTLIQ, (Z16_QTLIQ * Z16_PMLIQ) Z16_PMLIQ, DCMDCO, Z16_QTDEV QTDEV, Z16_QTBONI QTBONI, Z16_QTREP QTREP, Z16_DBAGEM QTDBAGEM, Z16_VLRDB VLRDB, (SELECT DISTINCT A1_COD FROM SA1010 WHERE A1_COD = Z16_CLIENT) CLIENTE
FROM FATMENSAL
INNER JOIN SA3010 ON Z16_VEND = A3_COD
INNER JOIN SX5010 ON X5_TABELA = 'A2' AND Z16_REGEST = X5_CHAVE AND X5_FILIAL = '01'
WHERE %Exp:cParam%

) B
ORDER BY A3_NREDUZ DESC

Por favor Acessar ou Registrar para participar da conversa.

Tempo para a criação da página:0.096 segundos
Joomla templates by a4joomla