SSRS 多个 iif 语句四舍五入而不是保留 2 位小数计算
SSRS multiple iif statements rounds instead of keeping 2 decimal calculation
我在计算字段中有以下语句,它只会 return 整数而不是小数点后两位的美元金额。如果我只使用 3 个 iif 条件中的一个,它可以正常工作,但是一旦我添加第二个或全部 3 个,它就不会 return 十进制值。我还分别尝试了所有 3 个 iif 条件,它们都有效。似乎只是 OR 导致了这个问题???
=
(iif ((Fields!loc.Value = "C08") OR (Fields!loc.Value = "C09"), Fields!price1.Value, Fields!price1.Value - Fields!price2.Value) )
或
(iif ((Fields!loc.Value = "C33") OR (Fields!loc.Value = "C32") OR (Fields!loc.Value = "C10") OR (Fields!loc.Value = "C30"), 0, Fields!price1.Value - Fields!price2.Value) )
或
(iif (Fields!price1.Value = 0, 0, Fields!price1.Value - Fields!price2.Value))
你不能这样写 IIF
,你需要嵌套 IIF
,这会有点乱。
您可能会发现使用更容易阅读的 SWITCH
语句更容易。
我可能没有正确理解你的逻辑,但应该足够接近了。请注意 returns true
的第一个表达式将得到 returned 所以在这种情况下我假设如果 price1
是 0
那么 returned 值将始终为零,如果这是不正确的,只是 re-order 表达式对
=SWITCH(
Fields!price1.Value = 0, 0,
Fields!loc.Value = "C08" OR Fields!loc.Value = "C09", Fields!price1.Value,
Fields!loc.Value = "C33" OR Fields!loc.Value = "C32" OR Fields!loc.Value = "C10" OR Fields!loc.Value = "C30", 0,
True, Fields!price1.Value - Fields!price2.Value
)
内容为...“如果 price1 为零,则 return 0”else“如果 loc 为 C08 或 C09 returnprice1”else“如果 loc 为 C33、C32、C10 或 C30然后 return 0”。最后,如果前面没有测试returntrue
,那么returnprice1-price2.
最后的 True
和 else
一样
这可以简化,但我想尽可能接近您最初的尝试。
我在计算字段中有以下语句,它只会 return 整数而不是小数点后两位的美元金额。如果我只使用 3 个 iif 条件中的一个,它可以正常工作,但是一旦我添加第二个或全部 3 个,它就不会 return 十进制值。我还分别尝试了所有 3 个 iif 条件,它们都有效。似乎只是 OR 导致了这个问题???
=
(iif ((Fields!loc.Value = "C08") OR (Fields!loc.Value = "C09"), Fields!price1.Value, Fields!price1.Value - Fields!price2.Value) )
或
(iif ((Fields!loc.Value = "C33") OR (Fields!loc.Value = "C32") OR (Fields!loc.Value = "C10") OR (Fields!loc.Value = "C30"), 0, Fields!price1.Value - Fields!price2.Value) )
或
(iif (Fields!price1.Value = 0, 0, Fields!price1.Value - Fields!price2.Value))
你不能这样写 IIF
,你需要嵌套 IIF
,这会有点乱。
您可能会发现使用更容易阅读的 SWITCH
语句更容易。
我可能没有正确理解你的逻辑,但应该足够接近了。请注意 returns true
的第一个表达式将得到 returned 所以在这种情况下我假设如果 price1
是 0
那么 returned 值将始终为零,如果这是不正确的,只是 re-order 表达式对
=SWITCH(
Fields!price1.Value = 0, 0,
Fields!loc.Value = "C08" OR Fields!loc.Value = "C09", Fields!price1.Value,
Fields!loc.Value = "C33" OR Fields!loc.Value = "C32" OR Fields!loc.Value = "C10" OR Fields!loc.Value = "C30", 0,
True, Fields!price1.Value - Fields!price2.Value
)
内容为...“如果 price1 为零,则 return 0”else“如果 loc 为 C08 或 C09 returnprice1”else“如果 loc 为 C33、C32、C10 或 C30然后 return 0”。最后,如果前面没有测试returntrue
,那么returnprice1-price2.
最后的 True
和 else
这可以简化,但我想尽可能接近您最初的尝试。