Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql '的SSRS程序流程;是'';否'';其他';_Sql_Reporting Services - Fatal编程技术网

Sql '的SSRS程序流程;是'';否'';其他';

Sql '的SSRS程序流程;是'';否'';其他';,sql,reporting-services,Sql,Reporting Services,我正在创建一个SSRS报告,有三个日期字段 起始日期 目标日期 完成日期 在我的报告中,我想创建一个带有一些条件的计算字段,以确定是否满足了目标日期 如果CompleteDate,则当它到达SSRS时,通常不存在NULL值。您需要与Nothing进行比较,以获得所需的结果。在同一条条件语句中,您需要将TargetDate与Now()进行比较,这将为您提供当前时间。2的表达式如下所示 =IIF(Fields!CompleteDate.Value Is Nothing AND Fields!Targ

我正在创建一个SSRS报告,有三个日期字段

起始日期 目标日期 完成日期

在我的报告中,我想创建一个带有一些条件的计算字段,以确定是否满足了目标日期


  • 如果CompleteDate,则当它到达SSRS时,通常不存在
    NULL
    值。您需要与
    Nothing
    进行比较,以获得所需的结果。在同一条条件语句中,您需要将
    TargetDate
    Now()
    进行比较,这将为您提供当前时间。2的表达式如下所示

    =IIF(Fields!CompleteDate.Value Is Nothing AND Fields!TargetDate.Value <= Now(), "Pending", "No")
    
    =IIF(Fields!CompleteDate.Value <= Fields!TargetDate.Value, "Yes",
        IIF(Fields!CompleteDate.Value Is Nothing AND Fields!TargetDate.Value < Now(), "Pending", "No")
    

    =IIF(Fields!CompleteDate.Value为Nothing,Fields!TargetDate.Value使用
    开关
    功能,该功能:

    计算表达式列表,并返回与列表中第一个为true的表达式相对应的对象值

    =开关(不是Nothing(字段!CompleteDate.Value)和
    字段!CompleteDate.Value字段!TargetDate.Value,“迟完成”
    ,isNothing(字段!StartDate.Value),“未启动”
    ,字段!TargetDate.Value>Now(),“正在进行”
    
    ,Fields!TargetDate.Value到目前为止您尝试了什么?IIF(Fields!CompleteDate.Value您介意将该表达式添加到您的问题中吗?对于编辑2:在每个格式之前删除一个括号,并在表达式末尾添加一个括号以使其正常工作。将日期格式更改为yyyyMMdd以正确比较字符串日期-如果它们都是日期,则无需使用格式。在此处播放devils advocate-这闻起来有点奇怪I don’我不喜欢业务逻辑,您确定这不应该在与生成此数据的应用程序中的报告或数据库本身失败的报告不同的层中执行吗?嗨,Steve-O,感谢您的输入,我非常感谢。是的,我希望使用一个表达式返回所需的结果。=IIF(Fields!CompleteDate.Value刚刚添加了另一个可以尝试格式化的表达式。对于条件语句的第一部分,似乎总是返回false,因此我会尝试格式化日期,以确保您比较的是相同的格式。@Steve-o169如果要将日期值格式化为字符串,至少要将其格式化为规范格式。@Steve-o169所有按正确顺序进行字典排序的方式。您的格式掩码使2019年1月31日大于2019年12月21日,这在经典的时间流理解中不是这样。@Sentinel抱歉,我的大脑今天工作不太好。您是对的,格式应该是
    MM dd yyyy
    ,但这是最正确的方式o将从年、月和日开始分离日期部分。我将稍后进行编辑。@Barley238我在答案末尾添加的最后一个表达式应该满足您的需要。它将从两个日期字段中比较年,然后比较一年中的日期,这样就不必检查月和日。
        =IIF((Year(Fields!CompleteDate.Value) <= Year(Fields!TargetDate.Value)) AND DatePart(DateInterval.DayOfYear, Fields!CompleteDate.Value) <= DatePart(DateInterval.DayOfYear, Fields!TargetDate.Value) , "Yes",
      IIF(Fields!CompleteDate.Value Is Nothing AND Fields!TargetDate.Value < Now(), "Pending", "No")
    
    =Switch( NOT isNothing(Fields!CompleteDate.Value) AND
             Fields!CompleteDate.Value <= Fields!TargetDate.Value, "Completed On-Time"
           , NOT isNothing(Fields!CompleteDate.Value) AND
             Fields!CompleteDate.Value >  Fields!TargetDate.Value, "Completed Late"
           , isNothing(Fields!StartDate.Value), "Not Started"
           , Fields!TargetDate.Value > Now(), "In Progress"
           , Fields!TargetDate.Value <= Now(), "Running Late"
           , TRUE, "Other")