Reporting services 在SSRS 2008中嵌套IIF
我正在编写一个表达式,它需要计算当前报表运行日期和字段中的日期值(名为cmp_lastap)之间的天数,然后返回一个值:Reporting services 在SSRS 2008中嵌套IIF,reporting-services,ssrs-2008-r2,Reporting Services,Ssrs 2008 R2,我正在编写一个表达式,它需要计算当前报表运行日期和字段中的日期值(名为cmp_lastap)之间的天数,然后返回一个值: “拖欠”如果经过的天数=60 “过期”如果=45和30和45和30以及您不必测试少于。正在使用短路bool评估 =IIF(DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) >= 60, "DELINQUENT", IIF(DateDiff(DateInterval.Day, Fields!cm
- “拖欠”如果经过的天数
=60
- “过期”如果
和=45
和30
45和30以及您不必测试少于。正在使用短路bool评估
=IIF(DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) >= 60, "DELINQUENT", IIF(DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) > 45, "PAST DUE", IIF(DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) > 30, "DUE", "CURENT") ) )
您还可以使用
语句,该语句可能更具可读性。您不必测试少于个字符。正在使用短路bool评估CASE
=IIF(DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) >= 60, "DELINQUENT", IIF(DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) > 45, "PAST DUE", IIF(DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) > 30, "DUE", "CURENT") ) )
您还可以使用一个
语句,这可能会证明更具可读性。您不能使用这样的语句,您必须说CASE
等等 但是。。。 我发现嵌套IIF很快就会变得混乱,尤其是当你有多个条件需要测试时,所以我更喜欢使用[date comparison logic]>X和[date comparison logic]
开关
使用switch可以这样写
另一个很好的副作用是,=SWITCH ( DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) >= 60,"DELINQUENT", DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) > 45,"PAST DUE", DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) > 30,"DUE", True, "CURRENT" )
在计算结果为SWITCH
的第一个表达式处停止,因此我们不需要测试范围。最后的True
与True
ELSE
注意我没有测试或检查你的日期逻辑,但假设这是正确的,那么上面的操作就可以了。你不能使用,你必须说
等等 但是。。。 我发现嵌套IIF很快就会变得混乱,尤其是当你有多个条件需要测试时,所以我更喜欢使用[date comparison logic]>X和[date comparison logic]
开关
使用switch可以这样写
另一个很好的副作用是,=SWITCH ( DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) >= 60,"DELINQUENT", DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) > 45,"PAST DUE", DateDiff(DateInterval.Day, Fields!cmp_lastap.Value, Today) > 30,"DUE", True, "CURRENT" )
在计算结果为SWITCH
的第一个表达式处停止,因此我们不需要测试范围。最后的True
与True
注意我没有测试或检查您的日期逻辑,但假设这是合理的,则上述操作将起作用ELSE