Câu hỏi của bạn không rõ thông số nào mà bạn đang gặp sự cố khi triển khai tính năng lọc "TẤT CẢ". Nhưng khi nhìn vào hai truy vấn của bạn, có vẻ như nó là @p_ServerName
tham số. Trong truy vấn đầu tiên của bạn, hai truy vấn kia dường như đã được thực hiện đúng cách lọc 'TẤT CẢ'.
Vì vậy, vấn đề phải nằm ở đây:
(c1.SystemName = @p_ServerName OR c1.SystemName = c1.SystemName)
Đầu tiên, bạn đang cố gắng đạt được điều gì với phần thứ hai? c1.SystemName=c1.SystemName
sẽ luôn đúng (trừ khi c1.SystemName là NULL
và nếu đó là mục tiêu của bạn thì hãy sử dụng c1.SystemName IS NOT NULL
Tôi nghĩ điều này sẽ trông giống như sau:
([email protected]_ServerName OR @p_ServerName='all')
Đó là cách bạn triển khai hai thông số còn lại, vì vậy có lẽ tôi đang thiếu một số thứ.
Ngoài ra, tôi không chắc ý của bạn khi bạn nói rằng giải pháp truy vấn UNIONed phải là cách SSRS đang hoạt động. SSRS không viết lại các truy vấn của bạn dựa trên các tham số, nó chỉ ghi lại các giá trị trong các biến đó để bạn sử dụng trong truy vấn của mình. Nếu tham số của bạn @p_ServerName
là một chuỗi thì nó chỉ là một biến VARCHAR với các ký tự "tất cả" trong đó.