Usuário com melhor resposta
Dúvida de soma no SQL

Pergunta
-
Boa noite á todos.
Comecei a trabalhar a pouco tempo com SQL e vi em algum lugar uma soma (sem ser consulta em tabela) da seguinte forma:
select 1+2+3+4+5+6+7+8+9+10 e o resultado foi 55 ..... Minha dúvida é a seguinte: se eu tiver 100 número para somar (de 1 até 100), sem ter que digitar 1+ até 100?Existe algum algorítimo para essa soma?
Muito obrigado desde já!
- Editado Edu Tavares quinta-feira, 21 de junho de 2012 21:13
Respostas
-
Olá Edu,
Eu nunca vi uma função pronta pra isso, mas eu criei uma abaixo e coloquei comentários para ficar mais fácil o entendimento:
--DECLARO AQUI UMA VARIÁVEL PARA CONTAR E OUTRA PARA ARMAZENAR A INSTRUÇÃO DO SELECT DECLARE @QTDE AS INT DECLARE @SOMA AS VARCHAR(5000) SET @QTDE = 1 SET @SOMA = 'SELECT ' --AQUI EU FAÇO UM LOOP E VOU CONCATENANDO OS VALORES QUE EU QUERO NO SELECT WHILE @QTDE <= 100 BEGIN SET @SOMA = @SOMA + CAST(@QTDE AS VARCHAR(3)) + '+' SET @QTDE = @QTDE + 1 END --COMO A INSTRUÇÃO VAI TER UM "+" NO FINAL, EU RETIRO ELE COM A FUNÇAO SUBSTRING. SET @SOMA = SUBSTRING(@SOMA, 0, LEN(@SOMA)) --AQUI EU DEIXEI APENAS PARA QUE VOCÊ POSSA VER O RESULTADO DO QUE FOI CONCATENADO, CONSTRUINDO A INSTRUÇÃO DO SELECT SELECT @SOMA --AQUI EU EXECUTO A INSTRUÇÃO QUE MONTEI (UMA STRING) E TENHO O RESULTADO DA INSTRUÇÃO SELECT EXECUTE(@SOMA)
Seria interessante você trabalhar isso como uma função, caso queira reaproveitar o código com frequência.
Qualquer dúvida basta me perguntar.
Espero ter ajudado ao menos um pouco!
PS: Se o post foi útil, marque-o como resposta ;-)
Carlos Monteiro
MCP ASP.Net C#
twitter: @carloshkd
http://www.vtex.com.br- Marcado como Resposta Edu Tavares sexta-feira, 22 de junho de 2012 11:12
Todas as Respostas
-
Olá Edu,
Eu nunca vi uma função pronta pra isso, mas eu criei uma abaixo e coloquei comentários para ficar mais fácil o entendimento:
--DECLARO AQUI UMA VARIÁVEL PARA CONTAR E OUTRA PARA ARMAZENAR A INSTRUÇÃO DO SELECT DECLARE @QTDE AS INT DECLARE @SOMA AS VARCHAR(5000) SET @QTDE = 1 SET @SOMA = 'SELECT ' --AQUI EU FAÇO UM LOOP E VOU CONCATENANDO OS VALORES QUE EU QUERO NO SELECT WHILE @QTDE <= 100 BEGIN SET @SOMA = @SOMA + CAST(@QTDE AS VARCHAR(3)) + '+' SET @QTDE = @QTDE + 1 END --COMO A INSTRUÇÃO VAI TER UM "+" NO FINAL, EU RETIRO ELE COM A FUNÇAO SUBSTRING. SET @SOMA = SUBSTRING(@SOMA, 0, LEN(@SOMA)) --AQUI EU DEIXEI APENAS PARA QUE VOCÊ POSSA VER O RESULTADO DO QUE FOI CONCATENADO, CONSTRUINDO A INSTRUÇÃO DO SELECT SELECT @SOMA --AQUI EU EXECUTO A INSTRUÇÃO QUE MONTEI (UMA STRING) E TENHO O RESULTADO DA INSTRUÇÃO SELECT EXECUTE(@SOMA)
Seria interessante você trabalhar isso como uma função, caso queira reaproveitar o código com frequência.
Qualquer dúvida basta me perguntar.
Espero ter ajudado ao menos um pouco!
PS: Se o post foi útil, marque-o como resposta ;-)
Carlos Monteiro
MCP ASP.Net C#
twitter: @carloshkd
http://www.vtex.com.br- Marcado como Resposta Edu Tavares sexta-feira, 22 de junho de 2012 11:12
-