Usuário com melhor resposta
Formula matematica

Pergunta
-
Amigos estou querendo calcular alguns campos para buscar o percentual, mas não estou conseguindo. Alguem poderia me ajudar?
Select SubQ.Escob, SubQ.Faixa, SubQ.AnoMes,
Sum(SubQ.Vl_Carga) as Vl_Carga,
Sum(Solicitacao) as Solicitacao,
Sum(SubQ.Acima_de_5_dias) as Acima_de_5_dias,
Sum(SubQ.Ate_5_dias) as Ate_5_dias,
SubQ.Acima_de_5_dias / SubQ.Vl_Carga + SubQ.Solicitacao + SubQ.Ate_5_dias as Comissionamento
From ( Select Escob, Faixa, Cast(Ano as varchar) + '/' + Right('0' + Cast(Mes_Num as varchar),2) AnoMes ,
Sum(Vl_Conta) as Vl_Carga,
Case When Motivo_Devolucao = 'Solicitação' then Sum(Vl_Conta)end as Solicitacao,
Case When Pgto_Antecipado = 'Acima de 5 Dias' then Sum(Vl_Pago)end as Acima_de_5_dias,
Case When Pgto_Antecipado = 'Até 5 Dias' then Sum(Vl_Pago)end as Ate_5_dias
From G_ANALISE_ESCOB
Where Faixa = '151 a 214'
Group By Escob, Faixa, Ano, Mes_Num, PGTO_ANTECIPADO, Motivo_Devolucao
) SubQ
Group By SubQ.Escob, SubQ.Faixa, SubQ.AnoMes, SubQ.Acima_de_5_dias, SubQ.Vl_Carga, SubQ.Solicitacao, SubQ.Ate_5_dias
Order By 1Obs: o campo é esse em vermelho
ACAO 151 a 214 2007/07 151263.82 NULL NULL 123243.84 NULL
ACAO 151 a 214 2007/07 202142.54 202142.54 NULL NULL NULL
ACAO 151 a 214 2007/07 16328531.53 NULL NULL NULL NULL
ACAO 151 a 214 2007/07 18652037.23 NULL NULL NULL NULL
ACAO 151 a 214 2007/07 1464511.00 NULL 928276.06 NULL NULL
ACAO 151 a 214 2007/08 100485.57 100485.57 NULL NULL NULL
ACAO 151 a 214 2007/08 120630.78 NULL NULL 90039.36 NULL
ACAO 151 a 214 2007/08 8128029.78 NULL NULL NULL NULL
ACAO 151 a 214 2007/08 9776875.15 NULL NULL NULL NULL
ACAO 151 a 214 2007/08 1284586.48 NULL 789615.91 NULL NULL
ACAO 151 a 214 2007/09 22119.74 22119.74 NULL NULL NULL
ACAO 151 a 214 2007/09 123799.10 NULL NULL 88717.59 NULL
ACAO 151 a 214 2007/09 7745790.62 NULL NULL NULL NULL
Respostas
-
Olá Daniel,
Primeira a divisão e a multiplicação e depois a adição e a subtração. Da forma como está ele fara a divisão primeiro para depois efetuar os demais cálculos. Tente o seguinte:
Code SnippetCAST
(IsNull(SubQ.Acima_de_5_dias,0) as numeric(10,2)) /CAST
((IsNull(SubQ.Vl_Carga,0) - IsNull(SubQ.Solicitacao,0) - isnull(SubQ.Ate_5_dias,0)) as numeric(10,2)) as Comissionamento[ ]s,
Gustavo
PS: Você pode apagar os posts repetidos
Todas as Respostas
-
Olá Daniel,
Você não explicitou qual seria a dificuldade no cálculo, mas tente o seguinte
Code SnippetCAST
(SubQ.Acima_de_5_dias AS NUMERIC(10,2))/
CAST(SubQ.Vl_Carga AS NUMERIC(10,2)) +SubQ
.Solicitacao + SubQ.Ate_5_dias as Comissionamento[ ]s,
Gustavo
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Cara não sei o que aconteceu postou uma pancada de post.
Bom voltando a vaca fria, o resultado já está sendo preenchido, mas se calcularmos na mão o valor está totalmente errado. O que eu quero é tirar um percentual entre ( Acima_5_dias / (vl_carga - Solicitacao - Ate_5_Dias).
Destaquei em vermelho para demonstrar o valor que está sendo exibido após executar o select abaixo.
escob faixa anomes vl_carga Solicitacao Acima_5_dias Ate_5_Dias Comissionamento
ACAO 151 a 214 2007/07 151263.82 .00 .00 123243.84 123243
Select SubQ.Escob, SubQ.Faixa, SubQ.AnoMes,
Sum(isnull(SubQ.Vl_Carga,0)) as Vl_Carga,
Sum(isnull(Solicitacao,0)) as Solicitacao,
Sum(isnull(SubQ.Acima_de_5_dias,0)) as Acima_de_5_dias,
Sum(isnull(SubQ.Ate_5_dias,0)) as Ate_5_dias,
Cast(Cast(isnull(SubQ.Acima_de_5_dias,0) as numeric(10,2)) / Cast(isnull(SubQ.Vl_Carga,0) as numeric(10,2)) +
Cast(isnull(SubQ.Solicitacao,0) as numeric(10,2)) + Cast(isnull(SubQ.Ate_5_dias,0) as numeric(10,2)) as int) as ComissionamentoFrom ( Select Escob, Faixa, Cast(Ano as varchar) + '/' + Right('0' + Cast(Mes_Num as varchar),2) AnoMes ,
Sum(Vl_Conta) as Vl_Carga,
Case When Motivo_Devolucao = 'Solicitação' then Sum(Vl_Conta)end as Solicitacao,
Case When Pgto_Antecipado = 'Acima de 5 Dias' then Sum(Vl_Pago)end as Acima_de_5_dias,
Case When Pgto_Antecipado = 'Até 5 Dias' then Sum(Vl_Pago)end as Ate_5_dias
From G_ANALISE_ESCOBWhere Faixa = '151 a 214'
Group By Escob, Faixa, Ano, Mes_Num, PGTO_ANTECIPADO, Motivo_Devolucao) SubQ
Group By SubQ.Escob, SubQ.Faixa, SubQ.AnoMes, SubQ.Acima_de_5_dias, SubQ.Vl_Carga,
SubQ.Solicitacao, SubQ.Ate_5_dias -
Olá Daniel,
Primeira a divisão e a multiplicação e depois a adição e a subtração. Da forma como está ele fara a divisão primeiro para depois efetuar os demais cálculos. Tente o seguinte:
Code SnippetCAST
(IsNull(SubQ.Acima_de_5_dias,0) as numeric(10,2)) /CAST
((IsNull(SubQ.Vl_Carga,0) - IsNull(SubQ.Solicitacao,0) - isnull(SubQ.Ate_5_dias,0)) as numeric(10,2)) as Comissionamento[ ]s,
Gustavo
PS: Você pode apagar os posts repetidos