SQL - (Delphi 2007) Como somar valores agrupando em três tabelas

15/07/2021

0

Boa tarde! Tenho três tabelas: Tabela1 (1) -> (N) , Tabela2 (N) ->(N) e Tabela3 (N) -> (N).
Tabela1 - INSTR_JURID
ID_INSTR_JURID NUM_INSTR_JURID VALOR_INSTR_JURID
90 01.2018.2700.0065 621,69
Tabela2 - CLASS_ORC
ID_CLASS_ORC ID_INSTR_JURID
7 90
8 90
Tabela3 - PREVISAO_TRIM
ID_PREVISAO_TRIM ID_CLASS_ORC EXERC_PREVISAO TRIM_PREVISAO VALOR_PREVISAO
1 7 2018 4 6,22
2 7 2019 1 4,96
3 7 2019 2 6,22
4 7 2019 3 6,22
5 7 2019 4 6,22
6 7 2020 1 6,22
7 7 2020 2 6,22
8 7 2020 3 6,22
9 7 2020 4 6,22
10 7 2021 1 6,22
11 7 2021 2 6,22
12 7 2021 3 6,22
13 7 2021 4 6,22
14 7 2022 1 6,22
15 8 2018 4 3,57
16 8 2019 1 1,24
17 8 2019 2 6,22
18 8 2019 3 6,22
19 8 2019 4 6,22
20 8 2020 1 6,22
21 8 2020 2 6,22
22 8 2020 3 7,48
23 8 2020 4 6,22
24 8 2021 1 0,00
25 8 2021 2 6,22
26 8 2021 3 0,33
27 8 2021 4 7,48
28 8 2022 1 0,00

No relatório final preciso do somatório dos valores por ano e trimestre (como abaixo), independente do ID_CLASS_ORC.
NUM_INSTR_JURID VALOR_INSTR_JURID EXERC_PREVISAO TRIM_PREVISAO TOT_VALOR_PREVISAO
01.2018.2700.0065 621,69 2018 4 9,79
01.2018.2700.0065 621,69 2019 1 6,20
01.2018.2700.0065 621,69 2019 2 12,44
01.2018.2700.0065 621,69 2019 3 12,44
01.2018.2700.0065 621,69 2019 4 12,44
01.2018.2700.0065 621,69 2020 1 12,44
01.2018.2700.0065 621,69 2020 2 12,44
01.2018.2700.0065 621,69 2020 3 13,70
01.2018.2700.0065 621,69 2020 4 12,44
01.2018.2700.0065 621,69 2021 1 6,22
01.2018.2700.0065 621,69 2021 2 12,44
01.2018.2700.0065 621,69 2021 3 6,55
01.2018.2700.0065 621,69 2021 4 13,70
01.2018.2700.0065 621,69 2022 1 6,22

Não consigo somar os valores para ano e trimestre quando uno as 3 tabelas
Segue meu sql:
select ij.ij_num_inst_jurid, yy.ij_EXERC_previsao, yy.ij_TRIM_previsao, yy.total_vlr_autorizado_trim
from ij_INSTR_JURID ij
inner join (
select xx.ij_EXERC_previsao, xx.ij_TRIM_previsao, xx.total_vlr_autorizado_trim, co.id_ij_INSTR_JURID
from ij_classificacao_ORC co
inner join (
select distinct ptc.ij_EXERC_previsao, ptc.ij_TRIM_previsao,
sum(ptc.ij_vlr_autorizado) as total_vlr_autorizado_trim, ptc.id_ij_classif_ORC
from ij_previsao_TRIM_classif ptc
group by ptc.ij_EXERC_previsao, ptc.ij_TRIM_previsao, ptc.id_ij_classif_ORC
order by ptc.ij_EXERC_previsao, ptc.ij_TRIM_previsao
) xx
on co.id_ij_classif_ORC = xx.id_ij_classif_ORC
) yy
on ij.id_ij_INSTR_JURID = yy.id_ij_INSTR_JURID
and ij.ij_num_inst_jurid = ''01.2018.2700.0065''
order by yy.ij_EXERC_previsao, yy.ij_TRIM_previsao
Kellybh

Kellybh

Responder

Post mais votado

16/07/2021

tente assim:
select
	ij.ij_num_inst_jurid, ij.ij_valor_instr_jurid,
	ptc.ij_EXERC_previsao, ptc.ij_TRIM_previsao,
	coalesce(sum(ptc.ij_vlr_autorizado),0) total_vlr_autorizado_trim
from
	ij_INSTR_JURID ij
left join
	ij_classificacao_ORC co on co.id_ij_INSTR_JURID = ij.id_ij_INSTR_JURID
left join
	ij_previsao_TRIM_classif ptc on ptc.id_ij_classif_ORC = co.id_ij_classif_ORC
group by
	ij.ij_num_inst_jurid, ij.ij_valor_instr_jurid,
	ptc.ij_EXERC_previsao, ptc.ij_TRIM_previsao
order by
	ij.ij_num_inst_jurid, ptc.ij_EXERC_previsao, ptc.ij_TRIM_previsao

Emerson Nascimento

Emerson Nascimento
Responder

Mais Posts

16/07/2021

Kellybh

Emerson,
Muito agradecida pela sua ajuda. Deu certo!
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