我正在開發一個報告,該報告應根據用戶指定的參數返回結果。有3個報告參數,其中一個是帶有'位置'的下拉菜單,另外兩個是在'user_id'和用戶的名字或姓氏中搜索的文本參數。這是我目前正在使用:SSRS - 優化WHERE T-SQL查詢中的條件
SELECT *
FROM UserTable1
WHERE Location = @Location
AND (user_id LIKE '%'[email protected]+'%'
AND first_name LIKE '%'[email protected]+'%'
OR last_name LIKE '%'[email protected]+'%')
如果@SearchUserID參數字段留空用戶,所有user_ids應退(符合其他2個參數)。如果指定,它將返回在user_id中具有該子字符串的user_id。對於@SearchUserName參數字段也是如此。如果留空,則應返回符合其他參數的所有用戶。如果指定,它應該返回所有在其first_name或last_name中具有該子字符串的用戶(但只有符合其他參數的結果)。如果兩者都留空,則應返回所有用戶。
我上面的查詢不起作用。它似乎只返回滿足@SearchUserName參數的結果,但忽略@SearchUserID參數。有沒有辦法來解決這個問題?我已經把@SearchUserID過濾器上表矩陣本身,使用表達式: =「‘&參數SearchUserID.Value &’」 但是,這導致了嚴重的阻礙性能..
感謝哈姆雷特,這工作完美。這些字段是varchars。 – dp3