我正在使用SSRS(VS2008)并创建工单的报告。在报告表的详细信息行中,我有以下列(包含一些虚假数据)
WONUM | A | B | Hours
ABC123 | 3 | 0 | 3
SPECIAL| 0 | 6 | 6
DEF456 | 5 | 0 | 5
GHI789 | 4 | 0 | 4
OTHER | 0 | 2 | 2
您可以看到,所有工单都有工单号(WONUM)以及总小时数(HOURS)。我需要根据WONUM将小时数放入A列或B列。我有一个特定命名的工作单的列表(在这个例子中,它们将是“SPECIAL”和“OTHER”),它们会将HOURS值放在B列中。如果WONUM不是特殊命名的,那么它列A列。这是我想要作为A列和B列的表达式:
Column A: =IIF(Fields!WONUM.Value IN ("SPECIAL","OTHER"), 0, Fields!Hours.Value)
Column B: =IIF(Fields!WONUM.Value IN ("SPECIAL","OTHER"), Fields!Hours.Value, 0)
但是你可能知道,Fields!WONUM.Value IN ("SPECIAL","OTHER")
不是一个有效的方法!使这项工作的最佳方法是什么?我不能出于其他原因以任何其他方式在SQL查询中标记它,因此必须在表中完成。
提前感谢您提供的任何帮助!
答案 0 :(得分:3)
试试这个,(使用InStr()函数)
IIF(InStr(Fields!WONUM.Value,"SPECIAL")>0 OR InStr(Fields!WONUM.Value,"OTHER")>0, 0, Fields!Hours.Value)
IIF(InStr(Fields!WONUM.Value,"SPECIAL")>0 OR InStr(Fields!WONUM.Value,"OTHER")>0, Fields!Hours.Value,0)
答案 1 :(得分:2)
如果它只是两个WONUM,那么你可以这样做:
A栏:
=IIF((Fields!WONUM.Value <> "SPECIAL") AND (Fields!WONUM.Value <> "OTHER"), Fields!Hours.Value, 0)
B栏:
=IIF((Fields!WONUM.Value = "SPECIAL") OR (Fields!WONUM.Value = "OTHER"), Fields!Hours.Value, 0)
或在每列中使用相同的公式以保持一致性,并在结尾处交换字段/ 0。