我遇到了问题,我不确定如何解决。
我有一张来自桌子的SSRS报告。我希望参数过滤器根据其中一列中的可用选项显示重复数据删除的值。
所以我的数据集的查询如下:
SELECT * FROM table1 WITH (NOLOCK) WHERE col1 IN (@param)
然后我想要一个名为param
的参数,它在上面的数据集中从col1
获取其可用和默认值,我希望它们能够重复数据删除。
从阅读online我了解到我必须创建一个虚拟参数并使用VBA代码来重复删除该列表。
所以我有这些参数:
param_dummy
从上述数据集中的col1
获取其可用和默认值param
使用param_dummy
Code.RemoveDuplicates
获取重复删除列表
但是我遇到循环逻辑问题。 param
从param_default
获取其值,该值从使用param
的数据集/查询中获取其值。
我该如何解决这个问题?
一种想法是删除WHERE col1 IN (@param)
,而是在SSRS报告中的Tablix表上使用过滤器。这有效,但我想知道它的效率如何。
和/或如果有人有任何其他建议我都是耳朵。
所以,让我们说我的数据库中有一张表就像这样:
| id | col1 | col2 |
|----|------|--------|
| 1 | a | hello |
| 2 | b | how |
| 3 | a | are |
| 4 | c | you |
| 5 | d | on |
| 6 | a | this |
| 7 | b | lovely |
| 8 | c | day |
我想要的是:
col1
(重复数据删除)col2
所以我有一个像这样的查询的数据集:
SELECT
*
FROM dbo.table1
WHERE col1 IN (@col1options) AND (@col2value IS NULL OR col2 = @col2value)
然后对于col1options
我会将可用和默认选项设为Get values from a query
,我会使用上面的数据集和col1
但由于查询/数据集依赖col1options
从查询/数据集中获取其默认值,因此无法工作。
我可以使用第二个数据集,但这意味着要多次调用SQL服务器,我想避免这种情况。
答案 0 :(得分:1)
我不确定我理解你的问题所以这是猜测...
如果您的意思是希望能够通过从表中的特定列中选择一个或多个条目来过滤数据,但是此列有重复项并且您希望参数列表不显示重复项,那么这就是做什么的
dsMain
添加为SELECT * FROM myTable WHERE myColumn IN (@myParam)
dsParamValues
添加为SELECT DISTINCT myColumn FROM myTable ORDER BY myColumn
dsParamValues
dsMain