sql - 当 SELECT 子句中存在 ISNULL 时,如何舍入值中的小数?
问题描述
我在此数据透视表中舍入小数时遇到问题:
这是代码:
SELECT P.LastName, [Bike Racks]=ISNULL([Bike Racks],0), [Bottles and Cages]=ISNULL([Bottles and Cages],0), [Bottom Brackets]=ISNULL([Bottom Brackets],0), [Brakes]=ISNULL([Brakes],0)
FROM #TabPivot
PIVOT (
SUM(Total)
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],0),2), ...
SELECT P.LastName, ROUND(([Bike Racks]=ISNULL([Bike Racks],0)),2), ...
SELECT P.LastName, ROUND(([Bike Racks]=ISNULL([Bike Racks],0), [Bottles and Cages]=ISNULL([Bottles and Cages],0), [Bottom Brackets]=ISNULL([Bottom Brackets],0), [Brakes]=ISNULL([Brakes],0)),2)
SELECT P.LastName, CAST([Bike Racks]=ISNULL([Bike Racks],0) AS Numeric(15,2))
SELECT P.LastName, CAST([Bike Racks]=ISNULL([Bike Racks],0)) AS Numeric(15,2)
你可以帮帮我吗?
解决方案
列名不能在函数内部,但在外部,试试这个:
SELECT [Bike Racks] = cast(isnull(0.66666, 0) as decimal(18,2))
作为替代方案,当您使用 AS 语法指定列名时,可能会更清楚:
SELECT cast(isnull(0.66666, 0) as decimal(18,2)) AS [Bike Racks]
推荐阅读
- excel - 未计算数据表中添加的信息(频率)
- cypress - 赛普拉斯:重新加载直到标签出现
- x86 - 请解释虚拟化中敏感指令的问题以及如何解决
- angular - Angular app.module.ts APP_INITIALIZER 在 providers 部分,一个 StaticInjectorError(AppModule)[InjectionToken Application Initializer
- python - 辍学是否适用于 Keras 中的正则化项?
- java - OpenJDK 和 iText 示例的编译问题
- c++ - 函数的 va_arg 参数是否存储在堆栈或堆内存中?
- c# - 显示 MessageBox 取消 SupressKeyPress=true
- r - 使用group_by后如何随机采样数据帧(sample_n)并计算汇总统计,并迭代999次?
- ios - 从消息中读取 OTP 而不将 oneTimeCode 设置为 Textfield