如何将不同的值放在同一个参数标签下

How to put different values under the same parameter label

我有一个 table 在 select 不同时看起来类似于下面的示例。格式为 MainFolder-SubFolder1-SubFolder2

Folder
A
A-B
A-B-C
B-C
B-D-E

我想创建一个下拉参数,其中选项为 A 或 B。如果我 select A,则 table 将显示 A、A-B 和 A-B-C。理想情况下,我想创建多个参数,以便用户能够 select 他们想要查看的主文件夹以及子文件夹。

我尝试使用以下查询创建数据集 SELECT DISTINCT Folder, CASE WHEN Folder LIKE 'A%' THEN 'A' WHEN Folder LIKE 'B%' THEN 'B' END AS MainFolder 下面给出 table

Folder MainFolder
A A
A-B A
A-B-C A
B-C B
B-D-E B

然后我创建一个参数,其中可用值来自数据集。值字段是 Folder,标签字段是 MainFolder。我想要它,以便当我 运行 报告参数仅显示 A 或 B,但 table 将显示完整的文件夹详细信息。但是我从下拉参数中得到的是 A, A, A, B, B.

我不确定我是否完全理解你的问题,但你能不能只为看起来像这样的参数值创建数据集..

SELECT DISTINCT LEFT(Folder, 1) AS MainFolder FROM myTable

那么您的主要数据集查询将类似于...

SELECT * FROM myTable WHERE Left(Folder,1) = @pMainFolder

... 其中 pMainFolder 是您的参数名称

或者如果 pMainFolder 是 multi-values 你可以做

SELECT * FROM myTable WHERE Left(Folder,1) IN(@pMainFolder)

**在 OP 附加信息后更新**。

假设所有文件夹都有某种形式的分隔符(您的示例中的 -),您可以用这个

Left(Folder,1)

LEFT(Folder, CHARINDEX('-', Folder)-1)

在我之前发布的示例中。

CharIndex 为我们提供了 Folder 列中第一个 - 的位置。所以在“Admin-south”中,这将是位置 6,然后我们减去 1 得到 5 并在 LEFT 函数中使用它,所以我们只取回最左边的前 5 个字符,在本例中为“Admin”