财务的要求,想多收点客户的钱
比如
212
就得到220
211.5也是220
------解决思路----------------------
如果想精确到十位数,写个函数吧,如果个位数和小数点不等于0 ,则把个位数设置为0,十位数+1,取整
------解决思路----------------------
USE [AdventureWorks2012];
GO
DECLARE @DecadeFlag TINYINT = 10 ; -- 定义需要进位的位置.注意数据类型变化,这里只到10分位,则定义为了TINYINT
DECLARE @PrecisionFlag MONEY = 1.0000 ; -- 定义需要的显示的精度
SELECT
[SOD].[LineTotal]
, CEILING([SOD].[LineTotal]/@DecadeFlag)*@DecadeFlag * @PrecisionFlag AS 'NewLineTotal'
FROM [AdventureWorks2012].[Sales].[SalesOrderDetail] AS [SOD]
WHERE [SOD].[SalesOrderID] = 64574 ;
/*
结果
LineTotal NewLineTotal
------------ ------------------
35.000000 40.0000
4.990000 10.0000
21.980000 30.0000
34.990000 40.0000
*/
------解决思路----------------------
declare @i money
set @i=34.9999
print ceiling(@i/10)*10
------解决思路----------------------
USE [AdventureWorks2012];
GO
DECLARE @DecadeFlag TINYINT ; -- 定义需要进位的位置.注意数据类型变化,这里只到10分位,则定义为了TINYINT
DECLARE @PrecisionFlag MONEY ; -- 定义需要的显示的精度
--赋值
SET @DecadeFlag = 10 ;
SET @PrecisionFlag = 1.0000 ;
SELECT
[SOD].[LineTotal]
, CEILING([SOD].[LineTotal]/@DecadeFlag)*@DecadeFlag * @PrecisionFlag AS 'NewLineTotal'
FROM [AdventureWorks2012].[Sales].[SalesOrderDetail] AS [SOD]
WHERE [SOD].[SalesOrderID] = 64574 ;
/*
结果
LineTotal NewLineTotal
------------ ------------------
35.000000 40.0000
4.990000 10.0000
21.980000 30.0000
34.990000 40.0000
*/