Usuário com melhor resposta
Calculando campos - Percentual

Pergunta
-
Boa tarde
Pessoal estou precisando criar um campo em percentual em minha tabela estou usando o script abaixo , mas acho que esta faltando alguma coisa , este script me retorna um numero extenso , e eu estava precisando apenas do percentual
Exemplo
SELECT
Campo1
,SUM(Campo1)-(SELECT SUM(A.Campo2) / 100
FROM Tabela2 )FROM Tabela1
Respostas
-
veja este exemplo
Create Table #Exemplo (Data Datetime, Valor int )insert into #Exemplo (Data, Valor) Values ('2007-01-01', 10)
insert into #Exemplo (Data, Valor) Values ('2007-01-01', 13)
insert into #Exemplo (Data, Valor) Values ('2007-01-01', 6)insert into #Exemplo (Data, Valor) Values ('2007-03-01', 10)
insert into #Exemplo (Data, Valor) Values ('2007-03-01', 13)
insert into #Exemplo (Data, Valor) Values ('2007-03-01', 6)
Select #Exemplo.Data, Valor, valortotal, (Valor/valortotal) as Percentagem
From #Exemplo Inner Join (Select Data , Convert(Numeric(6,3),Sum(Valor)) valortotal
From #Exemplo group by data) As Total_Datas On Total_Datas.Data = #Exemplo.DataAbs;
Todas as Respostas
-
Olá!!!
Não entendi exatamente o que deseja fazer, mas a solução é converter o campo para que mostre os números depois da vírgula:
Code BlockSELECT
Campo1
,
convert (numeric(9,2), SUM(Campo1))-(SELECT convert (numeric(9,2), SUM(A.Campo2))/ 100 FROM Tabela2 )FROM
Tabela1 -
Bom dia , Alexandre
Na verdade o que estava precisando é o seguinte
Criei um campo na minha tabela como tipo numerico e queria que este campo recebeçe um valor percentual entre um update como script que esta acima , mas tentei executar este script mas retornou a mensagem abaixo.
Server: Msg 8115, Level 16, State 8, Line 1
Arithmetic overflow error converting numeric to data type numeric.
Warning: Null value is eliminated by an aggregate or other SET operation. -
-
veja este exemplo
Create Table #Exemplo (Data Datetime, Valor int )insert into #Exemplo (Data, Valor) Values ('2007-01-01', 10)
insert into #Exemplo (Data, Valor) Values ('2007-01-01', 13)
insert into #Exemplo (Data, Valor) Values ('2007-01-01', 6)insert into #Exemplo (Data, Valor) Values ('2007-03-01', 10)
insert into #Exemplo (Data, Valor) Values ('2007-03-01', 13)
insert into #Exemplo (Data, Valor) Values ('2007-03-01', 6)
Select #Exemplo.Data, Valor, valortotal, (Valor/valortotal) as Percentagem
From #Exemplo Inner Join (Select Data , Convert(Numeric(6,3),Sum(Valor)) valortotal
From #Exemplo group by data) As Total_Datas On Total_Datas.Data = #Exemplo.DataAbs;