Utilização do Union dentro do Execute Blocks
Boa tarde.
Estou com dificuldades em construir uma consulta SQL utilizando UNION dentro do Execute Block no FireBird 2.5.
Primeiramente FORA do execute blocks estou utilizando duas tabelas "contas_receber" e "contas_pagar" que não possuem relação entre si (e preciso utilizar union). Aí preciso colocar um filtro para as contas no status "A", em aberto, mas tô enfrentando dificuldades porque preciso apresentar o MÊS da data de emissão da conta, o VALOR A RECEBER e em outra coluna o VALOR A PAGAR, mas quando utilizo o union ele acaba colocando os meses e os valores a pagar logo abaixo dos que vão receber.
Adicionei as colunas TIPO e N° Mês para facilitar para vocês visualizarem quais são CP = Contas a pagar e CR = Contas a Receber, mas originalmente teriam apenas os campos Mês (tipo Janeiro, etc), Contas Receber(Soma de cada Mês) e Contas Pagar(Soma de cada Mês)
PRINT DO RESULTADO: https://prnt.sc/BIMlLsQdSR56
Aí pensei em corrigir dentro do Execute Blocks utilizando variáveis, mas não sei como ficaria a estrutura de um union dentro do execute blocks por conta dos "returns". Por hora consegui replicar o resultado de antes dentro do execute blocks, mas como faço para colocar as informações de CP em outra coluna?
PRINT DO RESULTADO USANDO EXECUTE BLOCKS: https://prnt.sc/SVegUcNKmRFb
RESULTADO FINAL ESPERADO: https://prnt.sc/PPJlrg_hwqQx
Estou com dificuldades em construir uma consulta SQL utilizando UNION dentro do Execute Block no FireBird 2.5.
Primeiramente FORA do execute blocks estou utilizando duas tabelas "contas_receber" e "contas_pagar" que não possuem relação entre si (e preciso utilizar union). Aí preciso colocar um filtro para as contas no status "A", em aberto, mas tô enfrentando dificuldades porque preciso apresentar o MÊS da data de emissão da conta, o VALOR A RECEBER e em outra coluna o VALOR A PAGAR, mas quando utilizo o union ele acaba colocando os meses e os valores a pagar logo abaixo dos que vão receber.
Adicionei as colunas TIPO e N° Mês para facilitar para vocês visualizarem quais são CP = Contas a pagar e CR = Contas a Receber, mas originalmente teriam apenas os campos Mês (tipo Janeiro, etc), Contas Receber(Soma de cada Mês) e Contas Pagar(Soma de cada Mês)
select case extract (month from cr.data_emissao) when 1 then ''Janeiro'' when 2 then ''Fevereiro'' when 3 then ''Março'' when 4 then ''Abril'' when 5 then ''Maio'' when 6 then ''Junho'' when 7 then ''Julho'' when 8 then ''Agosto'' when 9 then ''Setembro'' when 10 then ''Outubro'' when 11 then ''Novembro'' when 12 then ''Dezembro'' end"Mês", sum(cr.valor_aberto)"Valor a Receber", extract (month from cr.data_emissao)"N° do Mês",''CR''"TIPO" from contas_receber cr where cr.status = ''A'' group by extract (month from cr.data_emissao) union all select case extract (month from cp.data_emissao) when 1 then ''Janeiro'' when 2 then ''Fevereiro'' when 3 then ''Março'' when 4 then ''Abril'' when 5 then ''Maio'' when 6 then ''Junho'' when 7 then ''Julho'' when 8 then ''Agosto'' when 9 then ''Setembro'' when 10 then ''Outubro'' when 11 then ''Novembro'' when 12 then ''Dezembro'' end"Mês",sum(cp.valor_aberto)"Valor a Pagar", extract (month from cp.data_emissao)"N° do Mês",''CP''"TIPO" from contas_pagar cp where cp.status = ''A'' group by extract (month from cp.data_emissao) order by 3
PRINT DO RESULTADO: https://prnt.sc/BIMlLsQdSR56
Aí pensei em corrigir dentro do Execute Blocks utilizando variáveis, mas não sei como ficaria a estrutura de um union dentro do execute blocks por conta dos "returns". Por hora consegui replicar o resultado de antes dentro do execute blocks, mas como faço para colocar as informações de CP em outra coluna?
execute block returns ("Mês" varchar(15), r_valorCR numeric(15,2),r_valorCP numeric(15,2), r_saldo numeric (15,2)) as begin for select case extract (month from cr.data_emissao) when 1 then ''Janeiro'' when 2 then ''Fevereiro'' when 3 then ''Março'' when 4 then ''Abril'' when 5 then ''Maio'' when 6 then ''Junho'' when 7 then ''Julho'' when 8 then ''Agosto'' when 9 then ''Setembro'' when 10 then ''Outubro'' when 11 then ''Novembro'' when 12 then ''Dezembro'' end"Mês", sum(cr.valor_aberto)"Valor a Receber" from contas_receber cr where cr.status = ''A'' group by extract (month from cr.data_emissao) union all select case extract (month from cp.data_emissao) when 1 then ''Janeiro'' when 2 then ''Fevereiro'' when 3 then ''Março'' when 4 then ''Abril'' when 5 then ''Maio'' when 6 then ''Junho'' when 7 then ''Julho'' when 8 then ''Agosto'' when 9 then ''Setembro'' when 10 then ''Outubro'' when 11 then ''Novembro'' when 12 then ''Dezembro'' end"Mês",sum(cp.valor_aberto)"Valor a Pagar" from contas_pagar cp where cp.status = ''A'' group by extract (month from cp.data_emissao) into "Mês", r_valorCR do begin suspend; end end
PRINT DO RESULTADO USANDO EXECUTE BLOCKS: https://prnt.sc/SVegUcNKmRFb
RESULTADO FINAL ESPERADO: https://prnt.sc/PPJlrg_hwqQx
Ganso Ltda
Curtidas 0