Som Alex K har nævnt, bør du skrive det som en inline tabel værdisat funktion. Her er artiklen der beskriver det.
Kort sagt ville syntaks være noget lignende
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
Du kan have én udvalgt forespørgsel (hvor kompleks den end er, kan du bruge CTE). Og så vil du bruge det som
SELECT * FROM dbo.GetForPeriod('1-Jan-2010', '31-Jan-2010')