Parameters 如果两个参数值均为日期,则表达式中计算日期列行的正确语法是什么?

Parameters 如果两个参数值均为日期,则表达式中计算日期列行的正确语法是什么?,parameters,ssrs-2008-r2,Parameters,Ssrs 2008 R2,我的查询中有两个参数@selectedMonth和@selectedYear。我有5个不同的日期列,我需要计算每个列的所有行,其中日期中的月份和年份与所选参数匹配。 我已使用一组可用值设置了每个参数(月份名称分别为一月到十二月,值为1到12)和(2018年到2022年,包括2018年到2022年,值与标签相同)。 在我的SQL查询中,我在WHERE子句中使用了以下内容: (19年4月2日更新,显示整个where条款) (sb_status=3)和(statecode=1)以及(DATEPART(

我的查询中有两个参数@selectedMonth和@selectedYear。我有5个不同的日期列,我需要计算每个列的所有行,其中日期中的月份和年份与所选参数匹配。 我已使用一组可用值设置了每个参数(月份名称分别为一月到十二月,值为1到12)和(2018年到2022年,包括2018年到2022年,值与标签相同)。 在我的SQL查询中,我在WHERE子句中使用了以下内容: (19年4月2日更新,显示整个where条款)

(sb_status=3)和(statecode=1)以及(DATEPART(MM,sb_eventdate)=@selectedMonth)和(DATEPART(MM,sb_eventdate)=@selectedYear)或 (状态代码=2)和(日期部分(MM,实际关闭日期)=@selectedMonth)和(日期部分(YY,实际关闭日期)=@selectedYear)

我在SSRS表中使用了以下表达式(在第一列中-我需要在其他4个日期列中使用类似的表达式):

我想我需要这个表达式,因为WHERE在5个日期列中使用OR,我只希望它计算每个列中的有效日期

我不太清楚问题出在哪里。我想我可能需要指定字段的“月”部分!createdon.value是否等于参数值?(今年也是如此),但我无法在表达式中计算出如何实现这一点。或者可能语法完全错误


对不起,我看这个太久了,看不见树林了。如果有人能给我指出正确的方向,我很乐意继续研究如何去做,但需要一点提示。

您在sql查询中使用where子句来限制数据集,因此您不需要SSRS表中的表达式,插入聚合函数或将总计添加到详细信息行。

SSRS表中的表达式需要(并针对每个日期列进行修改):


=总和(iiF(DatePart(“m”,字段!createdon.Value)=参数!selectedMonth.Value和DatePart(“yyyy”,字段!createdon.Value)=参数!selectedYear.Value,1,0))

感谢您的回复,因为WHERE子句中有5个日期列,这些列中的日期不符合我不想计算的条件,例如,当createdon日期符合参数时,EventDate可能不符合参数,但仍然会出现在结果中,因为它是行的一部分。因此,我确实需要限制每列中计算的结果。任何关于我做错了什么的帮助都会得到感激的。这真的很容易转化,并且完成了工作。谢谢你的帮助。我想我只是看了太久,需要一双新的眼睛。
   (DATEPART(mm, createdon) = @selectedMonth) AND (DATEPART(YY, createdon) = @selectedYear) OR (DATEPART(mm, sb_provisionalstatuschangedate) = @selectedMonth) AND (DATEPART(YY, sb_provisionalstatuschangedate) = @selectedYear) OR (DATEPART(MM, sb_confirmedstatuschangedate) = @selectedMonth) AND (DATEPART(YY, sb_confirmedstatuschangedate) = @selectedYear) OR
=SUM(iiF(Fields!createdon.Value=Parameters!selectedMonth.Value AND Fields!createdon.Value=Parameters!selectedYear.Value),1,0)