2017-04-27 72 views
1

我在SSRS中有一个报告,用于统计每月使用的项目,但由于当月没有使用任何项目,所以有些月份丢失。SSRS如果计数为零,则显示0

=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 情况下,当图7和12之间月(BagDoseStartDateTime)然后浇铸(右(年(BagDoseStartDateTime),2)为varchar(10))+ '/' +铸造(右(年( BagDoseStartDateTime)+ 1,2)as varchar(10)) else cast(right(year(BagDoseStartDateTime) - 1,2)as varchar(10))+'/'+ cast(right(year(BagDoseStartDateTime),2)为varchar(10))作为结束FinancialYear ,年(BagDoseStartDateTime)作为YearAdministered ,月(BagDoseStartDateTime)作为MonthAdministered ,d。[药物] ,d。[BagDoseStartDateTime]

FROM CAB_Reporting.dbo.CAB_V_Doses_Bags d --Inner加入CAB_Reporting.dbo.CAB_V_Dose_Actions DA上DA.PatientID = D.PatientID

凡((年(BagDoseStartDateTime)= 2016和月(bagDoseStartDateTime)> 6)或(年(BagDoseStartDateTime)= 2017)) 和((D.Drug Like'Red Blood Cells(1 Unit)'and D.Status Like'Administered') 或(D.Drug Like'Fresh Frozen Plasma(FFP 1 Unit )'D.Status Like'Administered') 或(D.Drug Like'Cryoprecipitate(Multiple Units)'and D.Status Like'Administered') 或(D.Drug Like'Platelets(1 Unit)'and D .Status Like'Administered')) 按年排序(BagDoseStartDateTime),月(BagDoseStartDateTime)'

+2

你是否返回2月和5月的空值或根本没有记录?最简单的方法可能是在数据集中完成这项工作,但没有看到您的数据集查询和输出看起来很难分辨。你可以发布数据集查询和示例输出。 –

+0

该数据集在2月或5月没有结果。 – BoDiggy

+0

FY \t年\t月\t ProductType \t ChartTime 16/17 \t 2017年红细胞\t 2017年2月1日10:25 – BoDiggy

回答

1

您需要确保您返回DataSet中的列或行,其值为NULL或0.如果您的DataSet中没有该字段,那么SSRS将不会知道它存在。我不确定你的查询是什么样子的,但是你可以在那里实现COALESCE,在你的月份有NULL值的地方设置0。

作为不太理想的结果,您可以在每个月的值字段中使用LOOKUP。

LOOKUP( “MONTHNAME”,菲尔兹!Month.Value,菲尔兹!Drug.Value “的DataSetName”)

这将寻找第一个参数匹配月,返回的第一个发现价值那个毒品领域。看起来你有多个字段,所以你必须使用LOOKUPSET,然后在这种情况下求和数组的内容。

希望有所帮助。

相关问题