首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将dataset与其他数据集进行多列/值SSRS的比较

将dataset与其他数据集进行多列/值SSRS的比较
EN

Stack Overflow用户
提问于 2016-02-08 20:29:51
回答 1查看 1.4K关注 0票数 0

这是图像参考。让我来解释一下情况。

如您所见,有两个数据集A和B,dataset B有实际的测试值,dataset A有目标值(更像范围)。代码比较每个测试(BLK .)值到目标测试(BLK .)值,代码如下所示

代码语言:javascript
复制
=IIF(Len(Lookup("UR_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target")) <= 0,
(
IIF(Fields!BLK.Value > Lookup("UW_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Yellow",
        IIF(Fields!BLK.Value < Lookup("LW_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Yellow","Green"))
),

(
IIF(Fields!BLK.Value > Lookup("UR_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Red",
    IIF(Fields!BLK.Value > Lookup("UW_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Yellow",
        IIF(Fields!BLK.Value < Lookup("LR_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Red",
            IIF(Fields!BLK.Value < Lookup("LW_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Yellow","Green"))))
))

现在我面临的问题是,我无法将每个产品测试值(从B)值与数据集A中的特定产品目标值进行比较。结果是,B中的每个测试都按照数据集A中的最后一个目标产品值进行比较。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-09 21:52:06

如注释中所提到的,可以对产品和限制字段进行协调。查找函数可以使用传递的任何字符串来搜索值。请注意以下示例:

代码语言:javascript
复制
Lookup(Fields!Product.Value & "-" & "UR_Limit",...,"TestTargetDataSet")

它将查找905200-UR_Limit并从Target值返回上限的BLK值。当然,您必须在TestTarget数据集中创建一个计算字段,并将其设置为产品字段和限制字段的连接。

我使用您提供的表重新创建了您的场景。首先,我在Target中创建了名为PRLimit的计算字段,并将其设置为以下表达式:

代码语言:javascript
复制
=Fields!Product.Value & "-" & Fields!Limits.Value

正如您在注释中提到的,您有多个列,您必须对每个列使用不同的表达式:

代码语言:javascript
复制
=Switch(
Fields!BLK.Value >
  Lookup(Fields!Product.Value & "-" & "UW_Limit",Fields!PRLimit.Value,Fields!BLK.Value,"DataSet9"),
  "Red",
Fields!BLK.Value >
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BLK.Value,"DataSet9"),
  "Yellow",
Fields!BLK.Value =
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BLK.Value,"DataSet9"),
  "Green",
Fields!BLK.Value <
  Lookup(Fields!Product.Value & "-" & "LW_Limit",Fields!PRLimit.Value,Fields!BLK.Value,"DataSet9"),
  "Red",
Fields!BLK.Value <
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BLK.Value,"DataSet9"),
  "Yellow"
)
代码语言:javascript
复制
=Switch(
Fields!BW.Value >
  Lookup(Fields!Product.Value & "-" & "UW_Limit",Fields!PRLimit.Value,Fields!BW.Value,"DataSet9"),
  "Red",
Fields!BW.Value >
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BW.Value,"DataSet9"),
  "Yellow",
Fields!BW.Value =
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BW.Value,"DataSet9"),
  "Green",
Fields!BW.Value <
  Lookup(Fields!Product.Value & "-" & "LW_Limit",Fields!PRLimit.Value,Fields!BW.Value,"DataSet9"),
  "Red",
Fields!BW.Value <
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BW.Value,"DataSet9"),
  "Yellow"
)

以上表达式分别用于为BLK和BW列获得正确的颜色。所使用的逻辑是:

  • 如果BLK值大于UW BLK值:红色
  • 否则,如果BLK值大于Target值:黄色颜色
  • 否则,如果BLK值等于Target值:绿色颜色
  • 否则,如果BLK值小于LW BLK值:红色颜色
  • 否则,如果BLK值小于Target BLK值:黄色颜色

这是你问题中提供的数据的最后结果:

如果这有帮助的话请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35278707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档