Como Alex K mencionou, você deve escrevê-lo como uma função com valor de tabela embutido. Aqui está o artigo que descreve sobre isso.
Em suma, a sintaxe seria algo como
CREATE FUNCTION dbo.GetForPeriod
( @StartDate datetime, @EndDate datetime)
RETURNS TABLE
RETURN
SELECT [[ your column list ]]
FROM [[ table list]
WHERE [[some column] BETWEEN @StartDate AND @EndDate
Você pode ter uma consulta de seleção (por mais complexa que seja, pode usar CTE). E então você vai usá-lo como
SELECT * FROM dbo.GetForPeriod('1-Jan-2010', '31-Jan-2010')