[Ajuda Select] Orcamento X Realizado X Desvio
08/12/2020
0
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
Post mais votado
09/12/2020
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.
Mais Posts
09/12/2020
Emerson Nascimento
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
09/12/2020
Mauricio Gabriel
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á.
09/12/2020
Mauricio Gabriel
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 ...
09/12/2020
Jair N.
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
Clique aqui para fazer login e interagir na Comunidade :)