Ajuda com SQL no Firebird (somar o resultador de dois select´s)

07/06/2019

5

tenho essas duas consultas, cada uma em um componente FDQuery

FDQuery1
select
SUM(IF_VALOR) AS TOTAL_ENTRADAS
from
ITENS_PL_FIXA
where
IF_CODIGO =:PF_CODIGO
AND IF_CC_ENTRADA IS NOT NULL


FDQuery2
select
SUM(IF_VALOR) AS TOTAL_RECEITAS
from
ITENS_PL_FIXA
where
IF_CODIGO =:PF_CODIGO
and IF_COD_RECEITA IS NOT NULL

gostaria de juntar as duas consultas em uma unico FDQuery somando TOTAL_ENTRADAS + TOTAL_RECEITAS = TOTAL_GERAL
Responder

Post mais votado

07/06/2019

pode ser assim:
select
	SUM(IF_VALOR) AS TOTAL_GERAL
from
	ITENS_PL_FIXA
where
	IF_CODIGO = :PF_CODIGO
	AND ( (NOT (IF_CC_ENTRADA IS NULL)) OR (NOT (IF_COD_RECEITA IS NULL)))

ou assim:
select
	SUM(case when not (IF_CC_ENTRADA is null) then IF_VALOR else 0 end) AS TOTAL_ENTRADAS,
	SUM(case when not (IF_COD_RECEITA is null) then IF_VALOR else 0 end) AS TOTAL_RECEITAS,
	SUM(IF_VALOR) AS TOTAL_GERAL
from
	ITENS_PL_FIXA
where
	IF_CODIGO = :PF_CODIGO
	AND ( (NOT (IF_CC_ENTRADA IS NULL)) OR (NOT (IF_COD_RECEITA IS NULL)))


Responder

Mais Posts

Creio que algo assim te ajude... use o union all e de nome iguais aos campos. depois use um select para somar os totais... nao compilei mas te de um rumo.
Abracos

SELECT SUM(TOTAL)
FROM (SELECT SUM(IF_VALOR) AS TOTAL
FROM ITENS_PL_FIXA
WHERE IF_CODIGO = :PF_CODIGO
AND IF_CC_ENTRADA IS NOT NULL
UNION ALL
SELECT SUM(IF_VALOR) AS TOTAL
FROM ITENS_PL_FIXA
WHERE IF_CODIGO = :PF_CODIGO
AND IF_COD_RECEITA IS NOT NULL)
Responder
Obrigado senhores, vou testar.
Responder
Obrigado senhores, optei pela opção do Emerson



pode ser assim:
select
	SUM(IF_VALOR) AS TOTAL_GERAL
from
	ITENS_PL_FIXA
where
	IF_CODIGO = :PF_CODIGO
	AND ( (NOT (IF_CC_ENTRADA IS NULL)) OR (NOT (IF_COD_RECEITA IS NULL)))

ou assim:
select
	SUM(case when not (IF_CC_ENTRADA is null) then IF_VALOR else 0 end) AS TOTAL_ENTRADAS,
	SUM(case when not (IF_COD_RECEITA is null) then IF_VALOR else 0 end) AS TOTAL_RECEITAS,
	SUM(IF_VALOR) AS TOTAL_GERAL
from
	ITENS_PL_FIXA
where
	IF_CODIGO = :PF_CODIGO
	AND ( (NOT (IF_CC_ENTRADA IS NULL)) OR (NOT (IF_COD_RECEITA IS NULL)))


Responder