eu ja fiz consultas dentros de consultas para obter um resultado parecido com o que voce quer, abaixo descrevo como deve ficar query e no scriptcase dependendo do valor da nota fiscal eu coloco um cor diferente
Se voce quiser posso enviar esse banco em postgresql para voce no seu email.
exemplo:
como deve fica a consulta:
Pais Cliente Nota Fiscal Valor
P1 C1 NF1 nnn.nnn,nn
P1 C1 NF2 nnn.nnn,nn
P1 C1 Total Cliente nnn.nnn,nn
P1 C2 NF3 nnn.nnn,nn
P1 C2 NF4 nnn.nnn,nn
P1 C2 Total Cliente nnn.nnn,nn
P1 Total Pais nnn.nnn,nn
P2 C3 NF5 nnn.nnn,nn
P2 C3 NF6 nnn.nnn,nn
P2 C3 Total Cliente nnn.nnn,nn
P2 C4 NF7 nnn.nnn,nn
P2 C4 NF8 nnn.nnn,nn
P2 C4 Total Cliente nnn.nnn,nn
P2 Total País nnn.nnn,nn
Total Geral nnn.nnn,nn
sql para o problema acima
SELECT
tb_externa.pais_titulo AS “Pais”,
tb_externa.clie_nome AS “Cliente”,
tb_externa.nota_fiscal AS “Nota Fiscal”,
TRANSLATE (TO_CHAR (tb_externa.val, ‘999,999,999.99’), ‘,.’, ‘.,’)
AS “Valor”
FROM
(
(
SELECT
TO_CHAR (pais.pais_codigo, ‘9999’) AS pais_codigo,
pais.pais_titulo AS pais_titulo,
TO_CHAR (clie.clie_codigo, ‘999999’) AS clie_codigo,
clie.clie_nome AS clie_nome,
TO_CHAR (nofi.nofi_nota_fiscal, ‘999999’)
AS nota_fiscal,
SUM (item.item_qtd_produto * item.item_vlr_unitario)
AS val
FROM
sc_ads03_vendas_v1.pais pais,
sc_ads03_vendas_v1.cliente clie,
sc_ads03_vendas_v1.nota_fiscal nofi,
sc_ads03_vendas_v1.item_nota_fiscal item
WHERE
pais.pais_codigo = clie.pais_codigo
AND clie.clie_codigo = nofi.clie_codigo
AND nofi.nofi_nota_fiscal = item.nofi_nota_fiscal
GROUP BY
pais.pais_codigo,
pais.pais_titulo,
clie.clie_codigo,
clie.clie_nome,
nofi.nofi_nota_fiscal
)
UNION ALL
(
SELECT
TO_CHAR (pais.pais_codigo, ‘9999’) AS pais_codigo,
pais.pais_titulo AS pais_titulo,
TO_CHAR (clie.clie_codigo, ‘999999’) AS clie_codigo,
clie.clie_nome AS clie_nome,
‘Total do Cliente’ AS nota_fiscal,
SUM (item.item_qtd_produto * item.item_vlr_unitario)
AS val
FROM
sc_ads03_vendas_v1.pais pais,
sc_ads03_vendas_v1.cliente clie,
sc_ads03_vendas_v1.nota_fiscal nofi,
sc_ads03_vendas_v1.item_nota_fiscal item
WHERE
pais.pais_codigo = clie.pais_codigo
AND clie.clie_codigo = nofi.clie_codigo
AND nofi.nofi_nota_fiscal = item.nofi_nota_fiscal
GROUP BY
pais.pais_codigo,
pais.pais_titulo,
clie.clie_codigo,
clie.clie_nome
)
UNION ALL
(
SELECT
TO_CHAR (pais.pais_codigo, ‘9999’) AS pais_codigo,
pais.pais_titulo AS pais_titulo,
‘999999’ AS clie_codigo,
‘Total do País’ AS clie_nome,
’ ’ AS nota_fiscal,
SUM (item.item_qtd_produto * item.item_vlr_unitario)
AS val
FROM
sc_ads03_vendas_v1.pais pais,
sc_ads03_vendas_v1.cliente clie,
sc_ads03_vendas_v1.nota_fiscal nofi,
sc_ads03_vendas_v1.item_nota_fiscal item
WHERE
pais.pais_codigo = clie.pais_codigo
AND clie.clie_codigo = nofi.clie_codigo
AND nofi.nofi_nota_fiscal = item.nofi_nota_fiscal
GROUP BY
pais.pais_codigo,
pais.pais_titulo
)
UNION ALL
(
SELECT
‘9999’ AS pais_codigo,
‘Total Geral’ AS pais_titulo,
‘999999’ AS clie_codigo,
’ ’ AS clie_nome,
’ ’ AS nota_fiscal,
SUM (item.item_qtd_produto * item.item_vlr_unitario)
AS val
FROM
sc_ads03_vendas_v1.pais pais,
sc_ads03_vendas_v1.cliente clie,
sc_ads03_vendas_v1.nota_fiscal nofi,
sc_ads03_vendas_v1.item_nota_fiscal item
WHERE
pais.pais_codigo = clie.pais_codigo
AND clie.clie_codigo = nofi.clie_codigo
AND nofi.nofi_nota_fiscal = item.nofi_nota_fiscal
)
) tb_externa
ORDER BY
tb_externa.pais_codigo,
tb_externa.clie_codigo,
tb_externa.nota_fiscal
Att Arquimedes