代码之家  ›  专栏  ›  技术社区  ›  Caroline Allen

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

  •  0
  • Caroline Allen  · 技术社区  · 5 年前

    我的查询@selectedmonth和@selectedyear中有两个参数。我有5个不同的日期列,我需要计算日期中月份和年份与所选参数匹配的每一列的所有行。 我已经为每个参数设置了一组可用值(一月到十二月的月份名称,分别为1到12)和(2018年到2022年包括在内,值与标签相同)。 enter image description here 在我的SQL查询中,我在WHERE子句中使用了以下内容: (更新了4/2/19,以显示整个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)=@selectedyear)or (状态代码=2)和(日期部分(mm,实际关闭日期)=@selectedmonth)和(日期部分(yy,实际关闭日期)=@selectedyear)

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

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

    我想我需要这个表达式,因为在5个日期列中使用了或的位置,我只希望它计算每一列中的有效日期。

    我不太确定问题出在哪里。我想我可能需要指定字段的“月份”部分!createdon.value等于参数值?(这一年也一样),但我无法用一种表达方式来表达。或者语法完全错误。

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

    2 回复  |  直到 5 年前
        1
  •  1
  •   SuperSimmer 44    5 年前

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

    =总和(IIF)(日期部分(“M”,字段!createdon.value)=参数!选择月份值和日期部分(“年”,字段!createdon.value)=参数!selectedyear.value,1,0)年)

        2
  •  0
  •   SuperSimmer 44    5 年前

    您通过在SQL查询中使用WHERE子句来限制数据集,因此您不必在SSRS表中使用表达式,也不必插入聚合函数或向详细信息行中添加合计。