Tôi quyết định viết bình luận của mình về câu trả lời của bạn, M.Ali, như một câu trả lời cho câu hỏi của chính tôi, khi tôi tìm ra cách để giải quyết vấn đề này. Có lẽ tôi đã không giải thích vấn đề của mình đủ chính xác. Tôi biết cách hoạt động ở trên và cách chuyển các tham số dựa trên một tập dữ liệu, thông qua SQL để tạo một tập dữ liệu khác, có cho phép nhiều giá trị hay không. Tôi đánh giá cao câu trả lời của bạn!
Vấn đề tôi gặp phải là truy vấn sẽ xác định danh sách giá trị của tôi cho tham số và truy vấn cho tập dữ liệu thực tế, đều giống nhau. Và đó là một truy vấn LỚN. Nói cách khác, khi nó ghi 'TABLE' trong mẫu mã, tôi có hàng trăm dòng mã. Và mục tiêu của tôi là không để toàn bộ truy vấn này xác định cả hai tập dữ liệu. Nếu trong tương lai tôi phải thay đổi truy vấn, tôi sẽ phải thực hiện nó ở nhiều nơi. Đây là cách tôi đã giải quyết nó:
Tôi đã đặt truy vấn chính trong tập dữ liệu được chia sẻ thay vì nhúng nó vào báo cáo của mình. Và sau đó tôi đã thêm một hàm row_number vào truy vấn của mình như sau:
SELECT ID, Value, UserID, rn = ROW_NUMBER() OVER(PARTITION BY UserID ORDER BY UserID)
FROM *my huge query*
Điều này có nghĩa là chỉ có một hàng 'rn =1' cho mỗi UserID. Sau đó, tôi quay lại báo cáo của mình. DataSet1 ban đầu của tôi sau đó sẽ chỉ đến tập dữ liệu được chia sẻ. DataSet2 (tham số một) cũng sẽ trỏ đến tập dữ liệu được chia sẻ với một điểm khác biệt là tôi đã thêm bộ lọc vào tập dữ liệu đó là 'rn =1'. Sau đó, tôi đã tạo một tham số với 'cho phép nhiều giá trị' lấy các giá trị của nó từ DataSet2. Và nó hoạt động như một sự quyến rũ. Bằng cách này, tôi chỉ có thể truy cập tập dữ liệu được chia sẻ khi tôi cần cập nhật truy vấn và cả DataSet1 và DataSet2 sẽ được cập nhật tương ứng!
Thành công :)
Một lần nữa, cảm ơn câu trả lời của bạn!