Hay un par de maneras de resolver esto. Lo más fácil sería modificar el procedimiento almacenado para permitirle filtrar el conjunto de resultados directamente, pero asumo que, por alguna razón, no puede hacerlo.
Lo que deberá hacer entonces es almacenar los resultados del procedimiento almacenado en una tabla / tabla temporal de esta manera:
DECLARE @tablevar table(col1,..
INSERT INTO @tablevar(col1,..) exec MyStoredProc 'param1', 'param2'
SELECT col1, col2 FROM @tablevar WHERE col1 = 'abc'
EDITAR:si puede editar la subconsulta:
Proceso antiguo almacenado:... SELECCIONE*FROMMyTableWHERECol1 =@param1 ANDCol2 =@param2
Nuevo proceso almacenado:
....
SELECT
*
FROM
(SELECT
*
FROM
MyTable
WHERE
Col1 = @param1 AND
Col2 = @param2
) a
WHERE
Col3 = FilterRule1
pero tal vez no entiendo completamente su proceso almacenado aquí. Una tabla temporal aquí no es realmente la solución de mayor rendimiento y puede ser algo complicada, pero si funciona para usted, hágalo, pero tengo problemas para imaginar una situación en la que no podría simplemente modificar su proceso almacenado para use una subconsulta en lugar de una tabla temporal.