SSRS 2008-为什么某些月份在矩阵中不返回任何结果,但在SQL查询窗格中显示结果?

时间:2019-02-06 10:21:47

标签: date parameters ssrs-2008-r2

我已经搜索过,但是无法找到其他类似这样的查询。我有一个带有月份和年份参数的查询,并且计数被汇总到一个矩阵中。在1月至9月(包括2018年)的几个月中一切正常,但是当我在2018年11月或2018年12月以及2019年1月进行测试时,我在查询窗格中得到结果,但矩阵中没有任何结果(甚至不是零)。 我的查询中的where子句是: (修改为7/2/18以显示更新的YYYY)

WHERE        (DATEPART(MM, createdon) = @selectedMonth) AND (DATEPART(YYYY, createdon) = @selectedYear) OR
                         (DATEPART(MM, sb_provisionalstatuschangedate) = @selectedMonth) AND (DATEPART(YYYY, sb_provisionalstatuschangedate) = @selectedYear) OR
                         (DATEPART(MM, sb_confirmedstatuschangedate) = @selectedMonth) AND (DATEPART(YYYY, sb_confirmedstatuschangedate) = @selectedYear) OR
                         (sb_status = 3) AND (statecode = 1) AND (DATEPART(MM, sb_eventdate) = @selectedMonth) AND (DATEPART(YYYY, sb_eventdate) = @selectedYear) OR
                         (statecode = 2) AND (DATEPART(MM, actualclosedate) = @selectedMonth) AND (DATEPART(YYYY, actualclosedate) = @selectedYear)
ORDER BY sb_eventdate, BookingName

我已经在@month参数中设置了1到12个月的可用值,并在@year参数中设置了2018到2022(包括)的可用值。 enter image description here

enter image description here

其中一个表达式的示例(第一列):

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

我测试了2018年1月供用户选择的所有内容,并导出了结果并计算了结果应该是什么,并且一切正确。 enter image description here

由于我的许多测试都是在1月18日的数据上进行的,所以我还在2018年的所有其他月份进行了测试。一切进展顺利,直到11月和12月我都没有结果-甚至没有零。 enter image description here

这通常表示数据有问题,因此没有结果,所以我在SQL查询窗格中运行了查询(插入12,其中查询显示@Month,插入2018,其中查询显示@year,我已导出并检查了-(显示前十个结果应该都在“已取消”下的矩阵中计数。所有列均存在结果。如果没有结果,我仍然希望看到零。 enter image description here

有人能解释为什么我在12月18日和1月19日对Novemebr一无所获吗?

3 个答案:

答案 0 :(得分:0)

尝试以下操作:在您的where子句“ DATEPART(YY)”中将其修改为“ DATEPART(YYYY”

答案 1 :(得分:0)

在查询的第四行,您有: (DATEPART(MM,sb_eventdate)= 2018)

这应该是: (DATEPART(YYYY,sb_eventdate)= 2018)

答案 2 :(得分:0)

我设法解决了这个问题,原因是已经创建了该数据库的另一个实例,该实例现已成为主数据库,而以前用作主数据库的那个实例仅用于紧急情况-显然不成立相同的数据。我在SQL查询窗格中查询一个实例,在Visual Studio中查询另一个实例。非常抱歉浪费您的时间,如果我们的沟通更好的话,那本来不会发生的。