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

07/06/2019

0

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
Emanuel Gonçalves

Emanuel Gonçalves

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)))


Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

07/06/2019

Anderson Possamai

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

07/06/2019

Emanuel Gonçalves

Obrigado senhores, vou testar.
Responder

07/06/2019

Emanuel Gonçalves

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

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