Jak wspomniał Alex K, powinieneś napisać to jako funkcję o wartości w tabeli inline. Oto artykuł który to opisuje.
W skrócie, składnia wyglądałaby jak
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
Możesz mieć jedno zapytanie wybierające (jakkolwiek złożone, możesz używać CTE). A potem użyjesz go jako
SELECT * FROM dbo.GetForPeriod('1-Jan-2010', '31-Jan-2010')