SSRS IIF日期评估

时间:2013-01-07 13:34:12

标签: reporting-services reportingservices-2005

我有以下代码

=IIf(Fields!Freeze.Value, Fields!effectivedate.Value, IIF(Month(Fields!effectivedate.Value) <> Month(Now()), Format(Now(), “MM/dd/yyyy”) , Fields!effectivedate.Value))

一个。在第一个IIF语句中,我检查Fields!Freeze.Value是否为true,如果为true,则显示Fields!effectivedate.Value(IIf(Fields!Freeze.Value,Fields!effectivedate.Value)

B中。在第二个IIF statemenet中,我检查Fields!effectivedate.Value是否是当前月份,如果它是当前月份,则显示Fields!effectivedate.Value,如果它不是当前月份,则显示当前日期。

我想在以下方面提供帮助。

在第一个IIF声明中,&gt;&gt;&gt; IIf(Fields!Freeze.Value, Fields!effectivedate.Value, 我想评估一个新值Fields!FreezeDate.value

  1. 如果Fields!Freeze.Value = true,则检查Fields!effectivedate.Value是否比Fields!FreezeDate.value少30天或更多。 A.如果它是29天或更短的字段!FreezeDate.value则显示Fields!effectivedate.Value B.如果比Fields!FreezeDate.value少30天或更多,则显示Fields!FreezeDate.value
  2. 示例1

     Fields!FreezeDate.value  = '12/30/2012'
     Fields!effectivedate.Value = '11/15/2010'
    
    
     then Display the Fields!FreezeDate.value
    

    示例2

     Fields!FreezeDate.value  = '12/30/2012'
     Fields!effectivedate.Value = '12/15/2010'
    
    
     then Display the Fields!effectivedate.Value
    

    我如何用SSRS代码写这个?

    如果我没有正确解释,请询问进一步的说明。

2 个答案:

答案 0 :(得分:2)

根据我的理解要求,你需要添加另一个IIf()部分来检查两个日期之间的天数差异,然后如果差异是&lt;则显示effectiveDate。 30天:

=IIf
(
  Fields!Freeze.Value
  , IIF
  (
    DateDiff(DateInterval.Day, Fields!effectiveDate.Value, Fields!FreezeDate.Value) < 30
    , Fields!effectiveDate.Value
    , Fields!FreezeDate.Value
  )
  , IIF
  (
    Month(Fields!effectivedate.Value) <> Month(Now())
    , Format(Now(), “MM/dd/yyyy”)
    , Fields!effectivedate.Value
  )
)

答案 1 :(得分:0)

我怀疑你缺少的是DATEDIFF函数的知识。

http://msdn.microsoft.com/en-us/library/aa337092%28v=sql.90%29.aspx

IIF(
  DATEDIFF(DAY, Fields!FreezeDate.Value, Fields!effectiveDate.Value) => 30,
  Fields!FreezeDate.Value, 
  Fields!effectiveDate.Value )

上面,我们正在使用DATEDIFF

第一个参数是我们要测量的时间测量之间的差异。 DAY。

实施例: -

DATEDIFF(DAY, '2013-01-01', '2013-01-15')应该会产生14。

全部绑定,我们正在计算FreezeDateeffectiveDate之间的日差。当该值超过30时,显示effectiveDate。否则,请显示FreezeDate

您可能需要四处玩才能获得所需的结果。你对逻辑的英文描述不是很好。在这种情况下,我能做到最好。