我正在开发一份报告,该报告应根据用户指定的参数返回结果。有 3 个报告参数,一个是带有“Locations”的下拉列表,另外两个是要在“user_id”和用户的名字或姓氏中搜索的文本参数。这是我目前正在使用的:
SELECT *
FROM UserTable1
WHERE Location = @Location
AND (user_id LIKE '%'+@SearchUserID+'%'
AND first_name LIKE '%'+@SearchUserName+'%'
OR last_name LIKE '%'+@SearchUserName+'%')
如果用户将 @SearchUserID 参数字段留空,则应返回所有 user_ids(满足其他 2 个参数)。如果指定,它将返回在 user_id 中具有该子字符串的 user_ids。@SearchUserName 参数字段也是如此。如果留空,它应该返回满足其他参数的所有用户。如果指定,它应该返回在其 first_name 或 last_name 中具有该子字符串的所有用户(但仅返回满足其他参数的结果)。如果两者都留空,它应该返回所有用户。
我上面的查询不起作用。它似乎只返回满足 @SearchUserName 参数的结果,但忽略了 @SearchUserID 参数。有没有办法解决这个问题?我已将@SearchUserID 过滤器放在tablix 本身上,使用表达式:=" " & 参数!SearchUserID.Value & " " 但这导致性能严重受阻..