繁体   English   中英

ssrs嵌套IIF以比较两个数据集

[英]ssrs nested IIF to compare the two Data sets

我需要创建一个基于两个数据集(即DataSet1和DataSet2)的增量报告。 如果DataSet1中的任何字段值有任何变化,我都需要以DataSet2作为参考。我需要更改文本框的颜色。 任何人都可以帮我这个问题,我写了一些代码,但抛出错误。

=IIF(Fields!CIF.value, "DataSet1" = Fields!CIF.value, "DataSet2" AND Fields!Account_ID.value,"DataSet1" = Fields!Account_ID.value,"DataSet2", 
                        IIF( Fields!Account_balance.value, "DataSet1" <> Fields!Account_balance.value, "DataSet2","Yellow","Transparent"),"Transparent","Transparent")

您不能混合数据集。

仅当每个数据集只有一行数据时,此方法才有效。 否则,您将需要弄清楚如何隔离所需的值。

=IIF(MAX(Fields!CIF.value, "DataSet1") = MAX(Fields!CIF.value, "DataSet2") AND MAX(Fields!Account_ID.value, "DataSet1") = MAX(Fields!Account_ID.value, "DataSet2"), 
    IIF(MAX(Fields!Account_balance.value, "DataSet1") <> MAX(Fields!Account_balance.value, "DataSet2"), "Yellow", "Transparent"), "Transparent")

通常,您会在一个表中有一个数据集,然后在另一个数据集中查找相应的值。

如果您的CIF帐户ID是通用标识符,并且您想对每个帐户的帐户余额进行补偿,那么我将把表格基于数据集1,然后从数据集2引入值进行比较。 将CIF和帐户ID合并为一个文本字符串以进行比较。

您的颜色表示将如下所示:

=Lookup(Fields!CIF.value & "|" & Fields!Account_ID.value, Fields!CIF.value & "|" & Fields!Account_ID.value, Account_balance.value, "DataSet2")

SSRS:

使用查找从一对一关系的名称/值对的指定数据集中检索值。 例如,对于表中的ID字段,可以使用Lookup从未绑定到数据区域的数据集中检索相应的Name字段。

另一种方法是在存储过程中执行此操作,然后将结果作为一个数据集返回。 例如,假设我在表中有10个字段。 我可以为每个记录创建数据的哈希:

select
    CASE WHEN chkHash2 = chkHash1 THEN 0 ELSE 1 END as 'ChgFlag'
    ,a.*
FROM
(
    select
        HASHBYTES('md5', t2.Field1 + t2.Field2 + ... + t2.Field10) as 'chkHash2'
        ,HASHBYTES('md5', t1.Field1 + t1.Field2 + ... + t1.Field10) as 'chkHash1'
        ,t1.Field1, t1.Field2, ... t1.Field10
    From Table2 t2
    LEFT JOIN Table1 t1 on t1.ID = t2.ID
) a

大假设...两个表都具有唯一且相关的ID。 这将为您提供Table1(dataset1)字段的结果集和一个标志,该标志将告诉您何时Table2(dataset2)的任何字段发生了更改。

根据您的应用程序,这可能会更容易,更快。 我总是尝试用SQL而不是SSRS来做WORK。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM