Existem algumas maneiras de resolver isso. O mais fácil seria modificar o procedimento armazenado para permitir que você filtre o conjunto de resultados diretamente, mas suponho que, por algum motivo, você não consiga fazer isso.
O que você precisará fazer é armazenar os resultados do procedimento armazenado em uma tabela/tabela temporária assim:
DECLARE @tablevar table(col1,..
INSERT INTO @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'
SELECT col1, col2 FROM @tablevar WHERE col1 = 'abc'
EDIT:Se você pode editar a subconsulta:
Old Stored Proc:...SELECT*FROMMyTableWHERECol1 =@param1 ANDCol2 =@param2
Novo proc armazenado:
....
SELECT
*
FROM
(SELECT
*
FROM
MyTable
WHERE
Col1 = @param1 AND
Col2 = @param2
) a
WHERE
Col3 = FilterRule1
mas talvez eu não esteja entendendo seu proc armazenado aqui completamente. Uma tabela temporária aqui não é realmente a solução com melhor desempenho e pode ser um pouco trabalhosa, mas se funcionar para você, vá em frente, mas estou tendo problemas para visualizar uma situação em que você não poderia simplesmente modificar seu procedimento armazenado para use uma subconsulta em vez de uma tabela temporária.