下拉菜单的唯一值

时间:2013-07-30 20:59:09

标签: sql ssrs-2008 business-intelligence bids

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

我知道这样做的原因是因为我在SQL查询中同时拥有站点名称和仓库名称,即使我对每个表连接了UNION的查询,这应该可以消除重复,我是从每个表中选择“站点”和“仓库”列,因此“站点”和“仓库”的每个组合都被视为唯一值。我不能从查询中取出“站点”列,因为我需要按站点过滤“仓库”菜单。有没有办法只为菜单获取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

2 个答案:

答案 0 :(得分:0)

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

从(
。选择DISTINCT temp.Warehouse SELECT DISTINCT Site,Warehouse
来自T1
UNION
SELECT DISTINCT Site,Warehouse
来自T2
UNION
SELECT DISTINCT Site,Warehouse
来自T3
)temp

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

答案 1 :(得分: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

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