下拉菜单的唯一值
Posted
技术标签:
【中文标题】下拉菜单的唯一值【英文标题】:Unique values for drop-down menu 【发布时间】:2013-07-30 20:59:09 【问题描述】:我有一个 s-s-rS 报告,其中包含几个不同的下拉参数菜单,每个参数菜单都取决于它们之前的菜单中的选择。该报告正在从几个不同的表中获取相似的数据,因此有一些重复的数据,并且这些值在菜单中多次显示。例如,假设我选择站点 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
【问题讨论】:
一个代码示例会有所帮助。听起来您可以将联合查询包装在另一个按仓库名称分组的 select 语句中。 @supergrady 我加了一个例子。 “我无法将站点列从查询中取出,因为我需要将仓库与其各自的站点相关联”是什么意思。 @FilipeSilva 我需要站点列才能按站点过滤仓库。如果我在查询中只有 Warehouse 列,我会有一堆仓库名称,不知道它们在哪个站点。 【参考方案1】:使用以下查询创建一个新数据集:
从 ( 中选择 DISTINCT temp.Warehouse 选择不同的站点,仓库 从 T1 联合 选择不同的站点,仓库 从 T2 联合 选择不同的站点、仓库 从 T3 ) 温度
如果需要,也可以将此查询传递给“仓库”参数属性中的可用值。
【讨论】:
这不起作用。它给了我一个错误,然后要求我填写 Site 的值。 好的,如果“仓库”参数不应该依赖于站点的值,则删除 where 条件。请查看编辑后的答案 嗯,这正是我的问题。仓库确实依赖于站点,但我只想要仓库的不同值,基于在第一个参数中选择的站点。 好的,如果它取决于站点,那么我之前的查询将不允许您在选择站点之前选择仓库。首先选择站点,据此我的查询将根据站点的输入进行过滤,然后获取不同的仓库值 我对 SQL 还是很陌生。您究竟是在哪里建议我在继续查询其余部分之前选择站点?【参考方案2】:这就是最终的工作。这有点令人费解,我承认我不太明白它为什么有效,但它确实有效。
SELECT Site, Warehouse, ROW_NUMBER() OVER (PARTITION BY Warehouse <br>ORDER BY Warehouse) AS RowNum<br>FROM(<br>SELECT Site, Warehouse, ROW_NUMBER() OVER (PARTITION BY Warehouse<br>ORDER BY Warehouse) AS RowNum<br>FROM Table1) AS T<br>WHERE T.RowNum = 1
解决方案改编自这个问题的答案:"Invalid column name" error on SQL statement from OpenQuery results
【讨论】:
以上是关于下拉菜单的唯一值的主要内容,如果未能解决你的问题,请参考以下文章