- 在这里即时通讯尝试做切换,然后如果在其他地方。我不知道我错过了什么,但这不起作用。
- 对于开关中的第一个条件,'WEEKLY',WW2和WW1是数字形式,但是是文本/字符串数据类型。因此在将它们转换为整数/数字数据类型之后,这些将在iff操作中使用。
- 第二个条件在开关中,'MONTHLY',WW2和WW1是月份名称。所以目标是从月份名称中获取月份编号。之后,WW1,WW2用于iff操作。
=SWITCH(Parameters!date_range_type.Value = "WEEKLY", IIF((cInt(Parameters!WW2.Value) - cInt(Parameters!WW1.Value)) > 10, Parameters!WW1.Value,IIF(cInt(Parameters!WW2.Value) < 11,1,cInt(Parameters!WW2.Value) - 10)), Parameters!date_range_type.Value = "MONTHLY", IIF((cInt(MONTH(datepart("YYYY",today())& "-" & Parameters!WW2.Value & "-01")) - cInt(MONTH(datepart("YYYY",today())& "-" & Parameters!WW1.Value & "-01"))) > 10, MONTH(datepart("YYYY",today())& "-" & Parameters!WW1.Value & "-01"),IIF(cInt(MONTH(datepart("YYYY",today())& "-" & Parameters!WW2.Value & "-01")) < 11,1,cInt(MONTH(datepart("YYYY",today())& "-" & Parameters!WW2.Value & "-01")) - 10)) )
SSRS:如果其他内部开关不工作
如果我在“每周”报告仅意味着犯规需要开关和其他IIF条件,它做工精细。只在'MONTHLY'上运行时也是如此。
编辑
这是怎么看起来像如果我使用IIF仅..
IIF(Parameters!date_range_type.Value = "MONTHLY",(IIF((cInt(MONTH(datepart("YYYY",today())& "-" & Parameters!WW2.Value & "-01")) - cInt(MONTH(datepart("YYYY",today())& "-" & Parameters!WW1.Value & "-01"))) > 10,MONTH(datepart("YYYY",today())& "-" & Parameters!WW1.Value & "-01"),IIF(cInt(MONTH(datepart("YYYY",today())& "-" & Parameters!WW2.Value & "-01")) < 11,1,cInt(MONTH(datepart("YYYY",today())& "-" & Parameters!WW2.Value & "-01")) - 10))), (IIF(Parameters!date_range_type.Value = "WEEKLY",(IIF((cInt(Parameters!WW2.Value) - cInt(Parameters!WW1.Value)) > 10, Parameters!WW1.Value, IIF(cInt(Parameters!WW2.Value) < 11,1,cInt(Parameters!WW2.Value) - 10))), "0")))
,尽管所有的文字上面目前还不清楚你的期望的输出是什么。如果我是正确的,则选择每周或每月给予您一个星期数字(?)或月份名称。计算的另一端是什么? – Jonnus
WW1和WW2都提供有相应的date_range_type列表,无论是当前的每周还是每月。对于每周类型,在进入iif之前的第一个动作是将WW1和WW2转换为数字,然后可以对两个值进行数学运算。而每月,因为提供的价值是以月份名称,它必须转换为月份数然后转换为数字。 – user2300035
上面的表达式会输出一个数字,表示输出和WW2值之间的范围总是大于或等于10,如果不是,则输出是差值为10且低于WW2的值。输出取决于WW1和WW2之间的范围这意味着WW1和WW2之间的差值。当差值大于10时,输出将取WW1的值,如果小于11,则输出固定为1(因为输出和WW2之间的距离需要至少10个,日期范围有效期只有1个,代表第1周或第1个月) – user2300035