Comme Alex K l'a mentionné, vous devez l'écrire sous la forme d'une fonction de table en ligne. Voici l'article qui décrit à ce sujet.
En bref, la syntaxe serait quelque chose comme
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
Vous pouvez avoir une requête de sélection (aussi complexe soit-elle, vous pouvez utiliser CTE). Et puis vous l'utiliserez comme
SELECT * FROM dbo.GetForPeriod('1-Jan-2010', '31-Jan-2010')