Buscar

lunes, 20 de abril de 2009

Redondeo por múltiplos(Excel, Sql)

En Excel existe una función para redondear por múltiplos, la función es MROUND(N;m), donde redondea n a el múltiplo de m mas cercano. Eso si tenemos el Análisis Toolpack., si no se puede utilizar la siguiente función
REDONDEAR(N/m;0)*m.
Ejemplo :
MROUND(5,3)
Resultado:
6

Esto es una función que hace lo mismo pero en SQL:
Uso:

select dbo.RoundMult(5,3)


CREATE FUNCTION [dbo].[RoundMult] (@Valor numeric(18,2),@Multiplo Numeric(18,2))
RETURNS nvarchar(50)
WITH EXECUTE AS CALLER
AS
BEGIN

declare @Residuo numeric(18,0)
DECLARE @ValASumar numeric(18,0)

set @Residuo=@Valor%@Multiplo

IF @Residuo=0
BEGIN
return @Valor
END
ELSE
set @ValASumar= @Multiplo-@Residuo
return @Valor+@ValASumar
END

1 comentario:

  1. Hola que tal,muy buena,oye solo un aduda,tengo valore y necesito siempre redondee dependiendo su multiplo asignado. dependiendo .5 abajo o .5 arriba.

    Ejemplo es como para surtir articulos en paquetes dependiendo su consumo en unidades. Garcias

    ResponderEliminar