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

What is the correct syntax in Expression to count date column rows if both parameter values are in date?

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

   (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

(sb_status = 3) AND (statecode = 1) AND (DATEPART(MM, sb_eventdate) = @selectedMonth) AND (DATEPART(MM, sb_eventdate) = @选定年份)或 (statecode = 2) AND (DATEPART(MM, actualclosedate) = @selectedMonth) AND (DATEPART(YY, actualclosedate) = @selectedYear)

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

=SUM(iiF(Fields!createdon.Value=Parameters!selectedMonth.Value AND Fields!createdon.Value=Parameters!selectedYear.Value),1,0)

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

不太清楚问题出在哪里。我想我可能需要指定 Fields!createdon.value 的 'Month' 部分等于参数值? (和年份一样),但是我不知道如何在表达式中做到这一点。或者语法可能完全错误。

抱歉,我已经看了很久了,只见树木不见森林。如果有人能给我指出正确的方向,我很乐意继续研究如何去做,但需要一点帮助。

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

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

=Sum(iiF(DatePart("m", Fields!createdon.Value) = Parameters!selectedMonth.Value and DatePart("yyyy", Fields!createdon.Value ) = 参数!selectedYear.Value, 1, 0))