0

我有一个 SSRS 报告,其中包含几个不同的下拉参数菜单,每个参数菜单都取决于它们之前菜单中的选择。该报告正在从几个不同的表中获取相似的数据,因此有一些重复的数据,并且这些值在菜单中多次显示。例如,假设我选择站点 A、B 和 C;这些站点中的每一个都可能有名为 WH1 和 WH3 的仓库,因此“WH1”和“WH3”每个都会在“仓库”下拉菜单中出现多次。

我知道这样做的原因是因为我的 SQL 查询中有站点名称和仓库名称,而且,即使每个表的查询都使用 UNION 连接,这应该消除重复项,但我同时选择了每个表中的 Site 和 Warehouse 列,因此 Site 和 Warehouse 的每个组合都被视为唯一值。我无法将 Site 列从查询中取出,因为我需要按 Site 过滤 Warehouse 菜单。有没有办法只为菜单获取 Warehouse 的唯一值?

这是我对提供 Warehouse 参数的数据集的 SQL 查询。该数据集还有一个基于在第一个菜单中选择的站点的简单过滤器。

SELECT DISTINCT Site, Warehouse
FROM T1
UNION
SELECT DISTINCT Site, Warehouse
FROM T2
UNION
SELECT DISTINCT Site, Warehouse
FROM T3
ORDER BY T$CWAR

4

2 回答 2

0

使用以下查询创建一个新数据集:

选择 DISTINCT temp.Warehouse from (
SELECT DISTINCT Site, Warehouse
FROM T1
UNION
SELECT DISTINCT Site, Warehouse
FROM T2
UNION
SELECT DISTINCT Site, Warehouse
FROM T3
) temp

将此查询传递给“仓库”的参数属性中的可用值,如果需要也提供默认值。

于 2013-07-31T07:16:14.873 回答
0

这就是最终的工作。这有点令人费解,我承认我不太明白它为什么有效,但它确实有效。

SELECT Site, Warehouse, ROW_NUMBER() OVER (PARTITION BY Warehouse
ORDER BY Warehouse) AS RowNum
FROM(
SELECT Site, Warehouse, ROW_NUMBER() OVER (PARTITION BY Warehouse
ORDER BY Warehouse) AS RowNum
FROM Table1) AS T
WHERE T.RowNum = 1

解决方案改编自这个问题的答案:OpenQuery results from SQL statement on SQL statement "Invalid column name" error

于 2013-07-31T19:02:19.650 回答