大佬教程收集整理的这篇文章主要介绍了当 SELECT 子句中存在 ISNULL 时,如何舍入值中的小数?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在此数据透视表中舍入小数时遇到问题:
enter image description here
代码如下:
SELECT P.Lastname,[Bike Racks]=ISNulL([Bike Racks],0),[Bottles and Cages]=ISNulL([Bottles and Cages],[Bottom Brackets]=ISNulL([Bottom Brackets],[Brakes]=ISNulL([Brakes],0)
FROM #TabPivot
PIVOT (
SUM(@R_76_10586@l)
FOR name IN ( [Bike Racks],[Bottles and Cages],[Bottom Brackets],[Brakes])) AS P
ORDER BY P.Lastname;
我尝试使用 ROUND 和 CAST...AS NUMERIC 函数,但没有奏效(也许我做错了什么):
SELECT P.Lastname,round([Bike Racks]=ISNulL([Bike Racks],2),...
SELECT P.Lastname,round(([Bike Racks]=ISNulL([Bike Racks],0)),2)
SELECT P.Lastname,CAST([Bike Racks]=ISNulL([Bike Racks],0) AS Numeric(15,2))
SELECT P.Lastname,0)) AS Numeric(15,2)
你能帮我吗?
@H_874_0@解决方法列名不能在函数内部,而是在函数外部,试试这个:
SELECT [Bike Racks] = cast(isnull(0.66666,0) as decimal(18,2))
作为替代,也许当您使用 AS 语法指定列名时会更清楚:
SELECT cast(isnull(0.66666,2)) AS [Bike Racks]
,
您只需将数据转换为十进制数据类型,指定正确的小数位数和精度。
例如
declare @v float=14
SELEct @v/3.066,Cast(@v/3.066 as decimal (5,2))
退货
4.5662100456621 4.57
,
试试这个:
SELEct Convert(decimal (17,0),[Bike Racks]) AS [Bike Racks with convert],Floor(ISNULL([Bike Racks],0)) AS [Bike Racks round down number],Ceiling(ISNULL([Bike Racks],0)) AS [Bike Racks round to up number]
您可以在以下示例中找到其他可用的圆形模型:
DECLARE @value decimal(10,2)
SET @value = 11.05
SELECT round(@value,1) -- 11.10
SELECT round(@value,-1) -- 10.00
SELECT round(@value,2) -- 11.05
SELECT round(@value,-2) -- 0.00
SELECT round(@value,3) -- 11.05
SELECT round(@value,-3) -- 0.00
SELECT CEILING(@value) -- 12
SELECT FLOOR(@value) -- 11
Reference
以上是大佬教程为你收集整理的当 SELECT 子句中存在 ISNULL 时,如何舍入值中的小数?全部内容,希望文章能够帮你解决当 SELECT 子句中存在 ISNULL 时,如何舍入值中的小数?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。