我的SSRS服务器正在使用ODBC连接从MySQL服务器提取数据。我有一个查询正在使用FIND_IN_SET方法。我的要求是,该报告应提供开始日期和结束日期参数以及以逗号分隔的“用户名”列表的选项。开始日期和结束日期参数可以正常工作,因此为了简洁起见,我将其排除在示例代码之外。
当我在MySQL Workbench中运行查询时,得到结果。当我在Report Builder 3.0的查询设计器中运行查询时,得到的结果是 IF和仅IF ,我对用于FIND_IN_SET()方法的参数值进行了硬编码。当我尝试使用“?”时参数的值,并粘贴与硬编码时完全相同的值,没有任何结果。
此查询在Workbench和报表生成器的查询设计器中有效:
select pwk.username,
sum(case when pwk.event = '/some-value/' then pwk.count else 0 end)
as order_detail_count
from table pwk
where find_in_set(pwk.username, 'foosername@test.net,foo2@test.com,username@test.org')
当我使用'?'时,该查询不返回任何内容参数并在运行查询时复制/粘贴以上值:
select pwk.username,
sum(case when pwk.event = '/some-value/' then pwk.count else 0 end)
as order_detail_count
from table pwk
where find_in_set(pwk.username, ?)
似乎报表生成器没有按照我期望的方式使用text参数,但是我无法确定如何“正确”使用它。有没有人遇到过这个问题?
我希望结果是相同的,但事实并非如此。有没有办法将FIND_IN_SET与text参数一起使用?还是有其他方法可以做到这一点?如果可以,我可以使用FIND_IN_SET以外的其他东西完全可以。我尝试使用IN(),但在WorkBench中什至不起作用。我的用户只需要能够输入多个用户名作为参数即可。
如果相关,我正在使用Tablix来显示数据。