Trabalhando com SQL Server 2000, surgiu-me a necessidade de arredondar valores decimais utilizando intervalos multiplos de um valor que e obtido em uma tabela.Infelizmente, o maximo que obtive das funcoes do SQL Server foi um arredondamento para cima, dado um numero de casas decimais. O comando abaixo foi utilizado:.csharpcode, .csharpcode pre{ font-size: small; color: black; font-family: Consolas, "Courier New", Courier, Monospace; background-color: #ffffff; /*white-space: pre;*/}.csharpcode pre { margin: 0em; }.csharpcode .rem { color: #008000; }.csharpcode .kwrd { color: #0000ff; }.csharpcode .str { color: #a31515; }.csharpcode .op { color: #0000c0; }.csharpcode .preproc { color: #cc6633; }.csharpcode .asp { background-color: #ffff00; }.csharpcode .html { color: #800000; }.csharpcode .attr { color: #ff0000; }.csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em;}.csharpcode .lnum { color: #606060; } 1: SELECT ROUND(2.1234,1) AS ValorArredondado1 2: SELECT ROUND(2.1234,2) AS ValorArredondado2 3: SELECT ROUND(2.1234,3) AS ValorArredondado3 4: SELECT ROUND(2.1234,4) AS ValorArredondado4Observe o resultado:ValorArredondado1---------------------------------------2.1000ValorArredondado2---------------------------------------2.1200ValorArredondado3---------------------------------------2.1230ValorArredondado4---------------------------------------2.1234Mas esse nao e o resultado esperado, era necessario que o valor arredondado fosse obrigatoriamente o proximo multiplo de um numero (intervalo) passado como parametro.Como nao encontrei nada parecido nas funcoes de sistema do SQL Server, implementei a funcao abaixo para resolver o problema. 1: CREATE FUNCTION fn_ArredondaIntervalo 2: ( 3: @Valor DECIMAL(18,2) 4: ,@Intervalo DECIMAL(18,2) 5: ) 6: RETURNS DECIMAL(18,2) 7: AS 8: BEGIN 9: RETURN CEILING(@Valor / @Intervalo) * @Intervalo 12: END 13: GOPara executa-la, deve-se utilizar chamadas como as do exemplo abaixo: 1: SELECT dbo.fn_ArredIntervalo(2.1234,.1) AS V1 2: SELECT dbo.fn_ArredondaIntervalo(2.1234,.25) AS V2 3: SELECT dbo.fn_ArredondaIntervalo(2.1234,.5) AS V3 4: SELECT dbo.fn_ArredondaIntervalo(2.1234,1) AS V4Veja o resultado da execucao:V1---------------------------------------2.20V2---------------------------------------2.25V3---------------------------------------2.50V4---------------------------------------3.00Dessa forma, obtive o resultado esperado. No resultado acima, o numero 2,1234 foi arredondado para o proximo multiplo de 0,1 (em V1), proximo multiplo de 0,25 (em V2) e assim por diante.Ate a proxima! Pessoal!A Microsoft esta distribuindo Vouchers de segunda chance (Second Shot) para os exames de certificacao em suas tecnologias (incluindo para o exame MCSA: SQL Server 2012 Certification). Os candidatos que adquirirem uma prova utilizando o voucher terao direito a uma nova tentativa gratuita em caso de reprova na primeira oportunidade. Para adquirir um voucher, basta acessar a URL abaixo e seguir as instrucoes (em ingles):http://bsf01.com/Microsoft_Vouchers/SecondShot.aspxA lista dos exames que podem ser obtidos com o voucher pode ser encontrada na pagina abaixo:http://www.microsoft.com/learning/en/us/offers/secondshot.aspxQuem tiver interesse deve se apressar, pois a promocao e por tempo limitado!Boa sorte! No dia 7 de Marco de 2012, a Microsoft realizara o SQL Server 2012 Virtual Launch Event, um evento on-line para promover a proxima versao do SQL Server.O evento sera composto de uma serie de palestras promovidas pelo time de produto, parceiros SQL Server e tambem grandes clientes da propria Microsoft discutindo sobre os novos recursos e vantagens da proxima versao do SQL Server.A agenda com todas as palestras pode ser conferida no site do evento. A participacao e gratuita e a inscricao deve ser feita atraves do site:SQL Server 2012 Virtual Launch EventOs participantes concorrerao a premios durante o evento. Nao deixe de aproveitar esta otima chance de conhecer o SQL Server 2012, alem de entrar em contato com a comunidade tecnica! Ao implementar um relatorio do SQL Server Reporting Services