我正在尝试创建SSRS报告,并且在某些计算中遇到问题。
我的列数很少,包含101.45,25,0.15,3.30等值。
实际上这些值是时间值,现在将所有这些值添加到结果129.9。
现在问题是当小数部分超过.60时我需要在数字上加一,就像我需要的最终结果是130.30。
任何人都可以帮我解决这个问题。
提前感谢你。
答案 0 :(得分:0)
您无法直接添加值。您需要先将值转换为100的比例。添加它,然后将其转换回您的等级60。
SELECT SUM(Floor(Column1)+(Column1%1)*100/60) FROM TimeAdd
http://sqlfiddle.com/#!3/b5d55/8
在SSRS中执行此操作
=
(Int(ReportItems!TextBox1.Value) + (ReportItems!TextBox1.Value Mod 1)*100/60)
+
(Int(ReportItems!TextBox2.Value) + (ReportItems!TextBox2.Value Mod 1)*100/60)
+
(Int(ReportItems!TextBox3.Value) + (ReportItems!TextBox3.Value Mod 1)*100/60)
+
(Int(ReportItems!TextBox4.Value) + (ReportItems!TextBox4.Value Mod 1)*100/60)
但上面会给你130.5,但你可能想要130.3。您需要将上述总和转换回60的比例。要么您可以将所有内容存储在另一个变量中,然后应用缩放或编写大量代码。
=INT(ReportItems!AbsoluteSum.Value) + (ReportItems!AbsoluteSum.Value Mod 1)*60/100
只是一个建议在SQL中解决问题然后在报表设计中更容易。
答案 1 :(得分:0)
您可以在数据集中创建自定义字段,您可以在其中编写表达式,将时间值转换为某个整数值或十进制值。
此过程需要重复参与计算的数据库中的所有字段,最后在数据集中,您可以说,数据库中的七个标准列和七个自定义列,您可以在以后使用这些列。
其他解决方案可能是在SSRS中编写一些自定义代码,您可以在其中创建函数,接受参数并为您进行计算。