[英]SSRS subtract a minus number from list in a sum column
我有一个 SSRS 数据集查询,它在一列值上有一个 SUM,它表示一个人缺勤的十进制时间,每次为学生记录缺勤时,管理人员都会输入该值。 在 uni 数据库中,工作人员似乎添加了缺勤记录,这些记录也显示了应该从记录中删除的小时数,他们只需在数字前面加上一个减号就可以做到这一点。 是否可以让此列将减号识别为减号并将其从总数中删除? 您可以在列表底部看到一条记录缺席 187.50 小时,但随后为同一缺勤期添加了另一条记录,其中指出应减去其中的 150.00 小时(他们以另一种方式填补了安置小时数的不足)。 希望我已经解释了该查询,并附上了数据集查询的屏幕截图。 我不确定我是否正确添加了屏幕截图。 谢谢。
我认为您可以添加一个 CASE 语句来检查 SUM 中的减号,如果它是负数,则使用 0。
CAST(dbo.srs_enl.enl_udfb AS DECIMAL(27, 2))
会成为
CAST(CASE WHEN LEFT(dbo.srs_enl.enl_udfb, 1) = '-' THEN 0 ELSE dbo.srs_enl.enl_udfb END AS DECIMAL(27, 2))
或者您可以使用布尔逻辑,如果小于 0,则将值乘以 0:
CAST(dbo.srs_enl.enl_udfb AS DECIMAL(27, 2)) * CASE WHEN CAST(dbo.srs_enl.enl_udfb AS INT) < 0 THEN 0 ELSE 1 END
我假设您希望看到最后两条记录在最后一列中显示为 37.50 的单个记录? 如果这是正确的,那么看起来您的分组列太多了。
你似乎在分组
GROUP BY
子句中删除GROUP BY
子句中删除GROUP BY
子句中删除如果您从 group by 子句中删除 3 列,则总和应该按预期“正常工作”。
还有一件事...尝试为表名设置别名,这将使您的 SQL 更易于阅读。
所以像
SELECT
dbo.TableA.columnA, dbo.TableB.columnB
FROM dbo.TableA
JOIN dbo.TableB on dbo.TableA.myKeyColumn = dbo.TableB.myKeyColumn
ORDER BY dbo.TableA.columnA
使用别名看起来像这样
SELECT
a.columnA, b.columnB
FROM dbo.TableA a
JOIN dbo.TableB b on a.myKeyColumn = b.myKeyColumn
ORDER BY a.columnA
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.