Como mencionó Alex K, debe escribirlo como una función de valor de tabla en línea. Aquí está el artículo que describe al respecto.
En resumen, la sintaxis sería 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
Puede tener una consulta de selección (por compleja que sea, puede usar CTE). Y luego lo usarás como
SELECT * FROM dbo.GetForPeriod('1-Jan-2010', '31-Jan-2010')