我有一个表格函数,我想提取以下内容:
select LastName,
FirstName,
Location,
Sales
from fnGetStuff (DateID)
我想多次为一堆DateID运行它,比如说(2001,2004,2005,2011)
有没有办法让每个DateID作为参数运行多次表格函数?
研究它我看到CROSS APPLY可能是一个答案,但不确定。
答案 0 :(得分:0)
您可以使用递归CTE
来获取所需的年数,并使用该结果进行交叉申请以获取所有年份的所有数据点。
;with cte(DateID, N)
as
(
select 2011 as DateID, 1
union all
select DateID+1 , N+1
from CTE
WHERE N < =2
)
select * from cte
CROSS APPLY
select LastName,
FirstName,
Location,
Sales
from fnGetStuff (cte.DateID)