如何在SSRS中根据单据日期计算并显示对应财年?
在SSRS中基于单据日期计算财年的解决方案
刚好帮你梳理下这个财年计算的方案,你已经找对核心逻辑啦!这个需求的核心是把每年4月到次年3月划分为一个财年,对应规则完全可以通过你写的SQL逻辑实现:
核心逻辑说明
用IIF函数判断单据日期的月份:
- 如果日期在1-3月(
Month(rTranslog.IssueDate)<=3),财年取日期年份减1(比如2018年3月31日对应财年2017) - 如果日期在4-12月,财年直接取日期的年份(比如2018年4月1日对应财年2018)
完整SQL查询代码
SELECT IIF(Month(rTranslog.IssueDate)<=3, Year(rTranslog.IssueDate)-1, Year(rTranslog.IssueDate)) AS [FY], rTranslog.IssueDate, rTranslog.Site, rTranslog.NSVCode, rProduct.LabelDescription, rTranslog.Ward, SUM(rTranslog.Qty) AS Quantity, SUM(rTranslog.Cost)/100 AS Cost -- 记得补充你的关联和筛选条件,比如: -- FROM rTranslog -- INNER JOIN rProduct ON rTranslog.NSVCode = rProduct.NSVCode -- WHERE rTranslog.IssueDate BETWEEN '2017-04-01' AND '2018-03-31'
额外小技巧:在SSRS报表表达式中直接计算
如果你不想修改数据源的SQL查询,也可以在SSRS报表的列表达式里直接实现这个逻辑,表达式写法如下:
=IIF(Month(Fields!IssueDate.Value) <=3, Year(Fields!IssueDate.Value)-1, Year(Fields!IssueDate.Value))
直接把这个表达式绑定到财年列的“表达式”属性里,就能得到同样的结果。
内容的提问来源于stack exchange,提问作者MusicMan
相关产品推荐
相关产品推荐

