如何将不同的值放在同一个参数标签下
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”
我有一个 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”