Hoy me estuve rompiendo el celebro para sacar una función de redondeo que se aproximara a un precio para no dar cambio en una tienda de una moneda determinada… por ejemplo, redondear a monedas para usar como mucho la moneda de 20 céntimos y olvidarnos de las monedas pequeñas (son un engorro para algunas tiendas). La llamada a la función sería por ejemplo
SELECT B_ROUND(9.27, 0.10)
nos redondearía a la siguiente múltiplo de 10 céntimos. En este caso, el resultado sería 9.30
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO
alter FUNCTION [dbo].[BROUND_05_cents] (@X money) RETURNS float AS BEGIN
DECLARE @temp money,
@resul money
SET @TEMP = (@x % 0.05)
IF @TEMP >= 0.03
SET @RESUL = @X + (0.05 - @TEMP)
ELSE
SET @RESUL = @X - @TEMP
RETURN @resul
END GO
Advertisement
Comentarios recientes