如何多次运行表格函数(每次使用不同的参数)

时间:2014-10-09 16:47:34

标签: sql sql-server function ssms tabular

我有一个表格函数,我想提取以下内容:

select LastName, 
       FirstName, 
       Location, 
       Sales
from fnGetStuff (DateID)

我想多次为一堆DateID运行它,比如说(2001,2004,2005,2011)

有没有办法让每个DateID作为参数运行多次表格函数?

研究它我看到CROSS APPLY可能是一个答案,但不确定。

1 个答案:

答案 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)