none
Duvidas Variaveis RRS feed

  • Pergunta

  • Boas Pessoal do forum,

    Alguem poderia me ajudar com o caso abaixo:

    Eu tenho uma tabela com alguns campos inteiro, neles eu obtenho o total de alunos Ex: 761843 nesse total eu preciso calcular a porcentagem de alunos que sao brancos que é = 894, a conta ate que é simples 894/761843 * 100

    agora o jeito que eu fiz foi assim: declarei uma variavel para obter total que seria os 761843

    DECLARE @MEUTOTAL INT
    SET @MEUTOTAL = (SELECT SUM(TOTAL_ALUNOS) FROM AL)

    DEPOIS ASSIM

        SELECT DISTINCT 'BRANCOS' AS [ALUNOS],
        SUM(ALUNOS)/ @SOMA * 100
        FROM AL
        WHERE COR = 'BRANCOS'

    O erro que ele me retorna seria esse:

    Must declare the scalar variable "@MEUTOTAL"

    Como nao tenho muita experiencia com variaveis estou pedindo uma ajuda aos senhores qualque informaçao que forem precisando eu vou explicando nao sei se ficou bem claro a minha duvida

    abraços


    • Editado Uelson.Jr quarta-feira, 16 de janeiro de 2013 16:07
    quarta-feira, 16 de janeiro de 2013 16:06

Respostas

  • Uelson

    Pelo seu script o erro deveria acontecer na variavel @soma que não foi declarada... teste este script

     DECLARE @MEUTOTAL INT, @SOMA int
     SET @MEUTOTAL = (SELECT SUM(TOTAL_ALUNOS) FROM AL)
     
     
        SELECT DISTINCT 'BRANCOS' AS [ALUNOS],
         SUM(ALUNOS)/ @SOMA * 100
         FROM AL
         WHERE COR = 'BRANCOS'


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS, MCITP, MCT.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta Uelson.Jr quarta-feira, 16 de janeiro de 2013 16:42
    quarta-feira, 16 de janeiro de 2013 16:23
    Moderador

Todas as Respostas

  • Olá,

    A segunda query não contém a variável @MEUTOTAL. Tens a certeza que é nessa segunda query que dá erro?


    Entre os dois blocos de código não tens GO ?

    Ao colocares GO entre blocos de código, as variáveis são limpas.


    Pedro Martins
    Portugal
    https://www.linkedin.com/in/rechousa

    quarta-feira, 16 de janeiro de 2013 16:09
  • Uelson

    Pelo seu script o erro deveria acontecer na variavel @soma que não foi declarada... teste este script

     DECLARE @MEUTOTAL INT, @SOMA int
     SET @MEUTOTAL = (SELECT SUM(TOTAL_ALUNOS) FROM AL)
     
     
        SELECT DISTINCT 'BRANCOS' AS [ALUNOS],
         SUM(ALUNOS)/ @SOMA * 100
         FROM AL
         WHERE COR = 'BRANCOS'


    Att.
    Marcelo Fernandes

    MCP, MCDBA, MCSA, MCTS, MCITP, MCT.
    Se útil, classifique!!!
    Me siga no twitter: @marcelodba

    • Marcado como Resposta Uelson.Jr quarta-feira, 16 de janeiro de 2013 16:42
    quarta-feira, 16 de janeiro de 2013 16:23
    Moderador
  • Olá Uelson,

    Está mensagem de erro ocorre quando você utiliza uma variável que não tenha sida declarada antes.

    Da maneira que você postal não há como dar erro. A única maneira seria se você tive selecionado para execução a partir a segunda linha (SET).

    Esta mensagem deve aparecer para a variável @SOMA, por que a mesma não está declara.

    Qualquer dúvida estou a disposição.

     


    Keny Maciel da Silva
    DBA SQL-Server ITGROUP
    MCTS SQL Server 2008 Implementation and Maintenance
    Email: kenymaciel@gmail.com

    quarta-feira, 16 de janeiro de 2013 16:33
  • Marcelo, deu certo.. eu que marquei bobera mesmo, todos colaboraram com a duvida

    Forte abraços...

    quarta-feira, 16 de janeiro de 2013 16:42