来自一个数据集的SSRS数据不在另一个数据集中

时间:2015-08-03 10:33:13

标签: reporting-services

我一直在寻找问题的可能答案,但却找不到答案。让我们假设我有2个数据集。 dsMediaServerData有两列:id和channel。我有其他数据集(dsCatalogData),包含很多列,包括id和channel。我想过滤dsCatalogData以仅显示那些不在dsMediaServerData中的记录。

1 个答案:

答案 0 :(得分:1)

我的建议是更新用于填充数据集的SQL查询,以便排除重复的id / channels。

如果您不能直接通过SQL执行此操作,因为数据集来自不同的数据集,您可以使用参数来完成此操作。

1)让我们从第一个数据集开始(在您的示例中为dsMediaServerData)。由于您的示例显示了按2列过滤,但数据将通过单个参数传递,因此您需要创建一个组合这两个数据的新列。

SELECT Convert(VARCHAR(255), id) + '_' + Convert(VARCHAR(255), channel) as 'combined_columns_to_filter'

2)现在创建一个新参数(让我们称之为@filter)。

  • 将数据类型设置为文本
  • 选中“允许多个值”。
  • 打开“默认值”并选择“从查询中获取值”。选择dsMediaServerData数据集,然后选择新列'combined_columns_to_filter'作为值字段。
  • 将可见性设置为“隐藏”,以便用户不会尝试与此参数进行交互。

3)现在更新第二个数据集。将@filter参数添加到WHERE子句中。

WHERE Convert(VARCHAR(255), id) + '_' + Convert(VARCHAR(255), channel) NOT IN (@filter)

这应该通过删除第一个数据集中找到的所有记录来有效地过滤第二个数据集,即使数据集位于不同的数据库中。

相关问题