Decidi escrever meu comentário sobre sua resposta, M.Ali, como uma resposta à minha própria pergunta, pois encontrei uma maneira de resolver isso. Talvez eu não tenha explicado o meu problema com precisão suficiente. Estou ciente de como a coisa acima funciona e como passar parâmetros com base em um conjunto de dados, através do SQL para criar outro conjunto de dados, vários valores permitidos ou não. Eu aprecio sua resposta embora!
O problema que tenho é que a consulta que definiria minha lista de valores para o parâmetro e a consulta para o conjunto de dados real são as mesmas. E é uma consulta ENORME. Em outras palavras, onde diz 'TABLE' no exemplo de código, tenho várias centenas de linhas de código. E meu objetivo era não ter toda essa consulta definindo os dois conjuntos de dados. Se no futuro eu tiver que alterar a consulta, teria que fazê-lo em mais de um lugar. Aqui está como eu resolvi:
Coloquei a consulta principal em um conjunto de dados compartilhado em vez de incorporá-la ao meu relatório. E então adicionei uma função row_number à minha consulta assim:
SELECT ID, Value, UserID, rn = ROW_NUMBER() OVER(PARTITION BY UserID ORDER BY UserID)
FROM *my huge query*
Isso significa que há apenas uma linha 'rn =1' por UserID. Então voltei ao meu relatório. Meu DataSet1 original, então, apenas apontaria para o conjunto de dados compartilhado. O DataSet2 (o parâmetro um) também apontaria para o conjunto de dados compartilhado com a única diferença de que adicionei um filtro a esse conjunto de dados dizendo 'rn =1'. Eu então fiz um parâmetro com 'permitir vários valores' que tirou seus valores de DataSet2. E funciona como um encanto. Dessa forma, posso simplesmente acessar o conjunto de dados compartilhado quando precisar atualizar a consulta, e tanto o DataSet1 quanto o DataSet2 serão atualizados de acordo!
Sucesso :)
Mais uma vez, obrigado pela sua resposta!