[Ajuda Select] Orcamento X Realizado X Desvio

08/12/2020

0

Boa tarde estimados amigo.
Venho novamente pedir uma ajuda.
Tenho uma tabela com nome orçamento com os seguintes campos
Tipo | Ano | Mes | Numero_Conta | Valor_Conta
No campo Tipo poderá ser > O para Orçado e R Para Realizado. Ficando assim no banco.
Tipo | Ano | Mes | Numero_Conta | Valor_Conta
O 2021 JAN 123 350,00
O 2021 JAN 456 100,00
R 2021 JAN 123 100,00
R 2021 JAN 456 150,00
O 2021 JAN 123 350,00
R 2021 JAN 123 200,00


E Assim por diante...
preciso de uma select que me traga na :
Primeira Linha o Valor Orçado da Conta
Segunda Linha o valor Realiza
Terceira Linha o Desvio (Orçado - Realizado) daquela conta.

Ficando assim

Tipo o resultado do select
Numero_Conta | Tipo | Ano | Mes | Valor
123 O 2021 JAN 350,00
123 R 2021 JAN 100,00
123 D 2021 JAN 150,00
E Assim por diante. (Varios meses do ano e varios numeros de conta.

Seria possível ajudar-me .... pois não estou conseguindo.


antecipo a todos cordial agradecimentos por ajudar-me.
Mauricio Gabriel

Mauricio Gabriel

Responder

Post mais votado

09/12/2020

Bom Dia tudo está na "ordenação" então :
1ªordem é a sua conta;
2ª ordem será Ano e Mês,
3ª Ordem tu deverá criar uma situação para que seja informado
1.1) o tipo "O" Orçado
1.2) o tipo "R" Realizado
1.3) o tipo "D" Desvio;
Neste caso costumo eu utilizar o "CASE". Exemplo CASE tipo WHEN "O" THEN 1 WHEN "R" THEN 2 WHEN "D" THEN 4 AS ordem_tipo.
Ficando assim ORDER BY, numero_conta, ano, mes, ordem_tipo.

Jair N.

Jair N.
Responder

Mais Posts

09/12/2020

Emerson Nascimento

bom.... primeiro que o exemplo passado está errado, né?
se foi orçado o valor de 350 e realizado 100, o desvio seria de 250, certo?

sugestão: não funciona melhor se você puser em colunas? algo assim:
select
	numero_conta, ano, mes, orcado, realizado, (orcado - realizado) desvio
from
(
	select
		numero_conta, ano, mes,
		sum(case when tipo = 'O' then valor_conta else 0 end) orcado,
		sum(case when tipo = 'R' then valor_conta else 0 end) realizado
	from
		orcamento
	[where]
	group by
		numero_conta, ano, mes
) t
Responder

09/12/2020

Mauricio Gabriel

Bom Dia tudo está na "ordenação" então :
1ªordem é a sua conta;
2ª ordem será Ano e Mês,
3ª Ordem tu deverá criar uma situação para que seja informado
1.1) o tipo "O" Orçado
1.2) o tipo "R" Realizado
1.3) o tipo "D" Desvio;
Neste caso costumo eu utilizar o "CASE". Exemplo CASE tipo WHEN "O" THEN 1 WHEN "R" THEN 2 WHEN "D" THEN 4 AS ordem_tipo.
Ficando assim ORDER BY, numero_conta, ano, mes, ordem_tipo.


Boa tarde

Jair Obrigado por responder-me ... seria possível ajudar-me neste select como um exemplo por favor ... sou iniciante em select ... se puder ajudar-me eu agradeço desde já.
Responder

09/12/2020

Mauricio Gabriel

bom.... primeiro que o exemplo passado está errado, né?
se foi orçado o valor de 350 e realizado 100, o desvio seria de 250, certo?

sugestão: não funciona melhor se você puser em colunas? algo assim:
select
	numero_conta, ano, mes, orcado, realizado, (orcado - realizado) desvio
from
(
	select
		numero_conta, ano, mes,
		sum(case when tipo = 'O' then valor_conta else 0 end) orcado,
		sum(case when tipo = 'R' then valor_conta else 0 end) realizado
	from
		orcamento
	[where]
	group by
		numero_conta, ano, mes
) t


Boa tarde !!! Isso mesmo , o valor esta errado , erro de digitação , tentei corrigir , mas não entrei como fazer isso ...
Muito obrigado pelo exemplo , vou tê-lo como material didatico para aumetar o conhecimento que tenho , e poder ajudar outros como fez comigo ... Muito agradeçido ...
Responder

09/12/2020

Jair N.

Boa Tarde simples

SELECT numero_conta, tipo, ano, mes, valor
, CASE tipo WHEN ''O'' THEN 1 WHEN ''R'' THEN 2 WHEN ''D'' THEN 3 ELSE 0 END AS tipo_ordem
FROM <sua tabela>
ORDER BY numero_conta, ano, mes, tipo_ordem
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar