我在SSRS中有一个报告,它计算每个月使用的项目,但由于当月没有使用任何项目,因此缺少了几个月。
=count(Fields!Drug.Value)
ie Jan=2, Mar=1, Apr=3, June=4
我希望月份分组显示,并且计数显示“' 0'如果某个月没有数据。
ie Jan=2, Feb=0, Mar=1, Apr=3, May=0, June=4
如果尝试了IsNothing表达式,但它仍然没有显示' 0'几个月没有数据。
=IIF(IsNothing(count(Fields!Drug.Value)),0, count(Fields!Drug.Value))
' SELECT Distinct 当月份(BagDoseStartDateTime)在7到12之间然后施放(右(年(BagDoseStartDateTime),2)作为varchar(10))+' /' + cast(右(年(BagDoseStartDateTime)+ 1,2)为varchar(10)) else cast(右(年(BagDoseStartDateTime) - 1,2)as varchar(10))+' /' + cast(右(年(BagDoseStartDateTime),2)作为varchar(10))结束为FinancialYear ,年(BagDoseStartDateTime)为YearAdministered ,月(BagDoseStartDateTime)作为MonthAdministered ,d。[药物] ,d。[BagDoseStartDateTime]
FROM CAB_Reporting.dbo.CAB_V_Doses_Bags D. - 内部加入CAB_Reporting.dbo.CAB_V_Dose_Actions DA on DA.PatientID = D.PatientID
其中((年(BagDoseStartDateTime)= 2016年和月(bagDoseStartDateTime)> 6)或(年(BagDoseStartDateTime)= 2017)) 并且((D.Drug喜欢'红血细胞(1单位)&和D.Status喜欢'管理') 或者(D.Drug喜欢'新鲜冰冻血浆(FFP 1单位)&和D.Status喜欢'管理') 或者(D.Drug喜欢'冷沉淀(多个单位)和D.Status喜欢'管理') 或者(D.Drug喜欢'血小板(1单位)&D。和D.Status喜欢'管理')) 按年份排序(BagDoseStartDateTime),月份(BagDoseStartDateTime)'
答案 0 :(得分:1)
您需要确保在DataSet 中返回一个列或行,其值为NULL或0.如果您的DataSet中没有该月的字段,则SSRS赢了不知道它存在。我不确定你的查询是什么样的,但是你可以在那里实现COALESCE来设置0,其中你的月份有NULL值。
作为不太理想的结果,您可以在每个月的值字段中使用LOOKUP。
LOOKUP(“MonthName”,Fields!Month.Value,Fields!Drug.Value,“DataSetName”)
这将查找与第一个参数匹配的月份,并返回该Drug字段的第一个找到的值。看来你有多个字段,所以你必须使用LOOKUPSET,然后在这种情况下对数组的内容求和。
希望有所帮助。