none
Calculando campos - Percentual RRS feed

  • 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

     

    Att,
    quarta-feira, 5 de dezembro de 2007 18:50

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.Data

     

    Abs;

     

    sexta-feira, 7 de dezembro de 2007 09:24

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 Block

    SELECT

    Campo1

    ,convert (numeric(9,2), SUM(Campo1))-(SELECT convert (numeric(9,2), SUM(A.Campo2))/ 100

    FROM Tabela2 )

    FROM Tabela1

     

     

     

     

    Abraço!!!
    quinta-feira, 6 de dezembro de 2007 02:44
  • 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.

     

    quinta-feira, 6 de dezembro de 2007 11:25
  •  

    Olá,

     

     

    Como está definida a coluna que está recebendo os dados?? Executa o SELECT e manda aqui um resultado e também a definição da coluna.

     

     

    Abraço

    sexta-feira, 7 de dezembro de 2007 00:58
  • 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.Data

     

    Abs;

     

    sexta-feira, 7 de dezembro de 2007 09:24