如何在不同的数据集(SSRS)中添加两列

时间:2016-07-27 06:41:07

标签: reporting-services

如何在表格中添加两列。在这种情况下,正确的表达方式是什么。 被告知我有两个数据集(Extra Deduction,Checklist),这两个数据集有数值列值,如何用不同的数据集添加这两列。

我做了这些步骤(可能有帮助): -

  • 打开Visual Studio - 新项目 - 在商业智能部分,我选择了Reporting Service。
  • 然后右键单击Reports文件夹,然后我选择"添加新报告"。
  • 然后在报告向导中设置数据源名称" DataSource1"并选择" Microsoft Dynamics CRM Fetch"连接类型。
  • 在Query Builder中,我将XML查询带入了我想要的数据,它包含两列(参考编号,演绎值),数据集名称为(DedctionDS)。
  • 然后我在表格中再添加一列以从另一个数据集中获取另一个值。
  • 然后我用XML查询创建了第二个名为(ChkListDS)的数据集,带来两列(参考编号,清单值)。
  • 在表格的新列中,我创建了一个表达式来从其他数据集中获取值,表达式为(= Lookup(Fields!DedctionRefNo.Value,Fields!ChkListRefNo.Value,Fields!ChecklistValue.Value,&#34) ; ChkListDS"))。

到目前为止数据还算完美,但我现在需要在(扣除值)和(清单值)之间进行求和,它们在不同的数据集中。

请参阅下面的图片,了解我想要做什么。

1

我希望我解释得很好。

在这方面的任何帮助将受到高度赞赏。

谢谢..

1 个答案:

答案 0 :(得分:1)

如果它是相同的数据源(最好是SQL Server),我建议你使用SQL join来创建一个数据集。但是,似乎存在问题,因此您必须使用其他策略。

我在另一个项目(而不是我的代码)中看到的是,您可以使用一个数据源作为主数据源,并且对于该数据源的每一行,在另一个数据源中查找匹配的行。这需要SSRS中的Lookup()函数,您显然已经发现它是关联两个数据集的方法。

现在,您只需要使用查找功能从您收到的值中获取数字,然后将其添加到您选择的列中。

您的开始表达是:

= Lookup(
    Fields!DedctionRefNo.Value, 
    Fields!ChkListRefNo.Value, 
    Fields!ChecklistValue.Value, 
    "ChkListDS")

要将其转换为十进制表示形式(我希望这是您在数据库中的源代码),您需要CDec()函数:

= CDec(Lookup(
    Fields!DedctionRefNo.Value, 
    Fields!ChkListRefNo.Value, 
    Fields!ChecklistValue.Value, 
    "ChkListDS"))

最后,您想要添加第一个值,例如:

= CDec(Lookup(
    Fields!DedctionRefNo.Value, 
    Fields!ChkListRefNo.Value, 
    Fields!ChecklistValue.Value, 
    "ChkListDS")) 
    + Fields!{Your-deduction-value-field-name}

如果数据库中的your-deduction-value-field不是十进制的,那么你必须使用相同的CDec()函数将其转换为十进制。