sql-server - SSRS:与 NULLS 竞争时的 SUM 值
问题描述
在 SSMS 中,这很容易通过ISNULL
函数实现。那么在 SSRS 中,我将如何SUM
从其中一个具有的两列中获取值NULLS
?
以下是数据示例:
所以如果一个pro_rate
值存在,我想在聚合中使用它,但是如果它是NULL,那么我需要从cost
列中拉取。这是我最近对表达式的尝试:
=iif(isnothing(sum(Fields!pro_rate.Value), sum(Fields!cost.Value), sum(Fields!pro_rate.Value)))
在 SQL 中,我会简单地编写sum(isnull(pro_rate, cost))
(以确保清楚我的结果应该是什么),但我的#Error
报告中不断出现可怕的情况。
更新1:我将查询更改为以下内容并得到#Error。
=sum(iif(isnothing(Fields!pro_rate.Value), Fields!cost.Value, Fields!pro_rate.Value))
解决方案
在查看了您的数据和使用的表达式后,我得出的结论是,由于转换错误,您看到了该错误消息。看起来您的cost
字段是一种INT
数据类型,因为所有值似乎都四舍五入到最接近的整数,并且该pro_rate
字段似乎是一种DECIMAL
数据类型。当您尝试将SUM
整数转换为没有适当精度级别的小数时,这似乎会导致问题。
为了测试这一点,我创建了以下简单数据集:
CREATE TABLE #temp (A VARCHAR(2), B INT, C DECIMAL(4,2))
INSERT INTO #temp (A,B,C)
VALUES ('A', '5', '1.7'), ('B', '10', '2.6'), ('C', '9', NULL)
SELECT * FROM #temp
有了这些数据,我能够测试并确认我的理论是正确的,您应该能够通过在Derrick Moeller提供的表达式中围绕字段#Error
放置一个函数来修复您的理论。CDEC
cost
推荐阅读
- protractor - 量角器 - 获取 sendChromiumCommand 的结果
- php - Laravel - 添加值以选择 PDOException 时出错(代码:42000):SQLSTATE [42000]
- git - Git gui图标消失与代码
- python - 为什么调整图像大小最终也会改变通道?
- azure - 适用于小型公司的 Azure AD + 安全性
- python - 在 Flask 中获取仅返回模板/html 页面的路由
- amazon-web-services - 多次点击 API 资源时出现 Aws Api 网关 cors 问题
- python - 如何使用 KERAS 获取 DNN 最后一层的值?
- javascript - 如何添加一个会等到 firebase auth 加载的 firebase 侦听器?
- swift - 如何在 Swift 中不硬编码用户集合文档 ID 的情况下将数据添加到 Firestore Cloud