如何将列值作为函数参数传递? SQL Server 2005

时间:2018-12-28 02:16:41

标签: sql sql-server-2005

我是新来的,所以请放轻松。如何将列值作为函数参数传递?

我可以通过此查询选择月份和年份:

 SELECT 
     DATEPART(MONTH, a.RequestDate), 
     DATEPART(YEAR, a.RequestDate) 
 FROM 
     TABLE A

样本数据:

Months  Years 
------  -----
  5     2013
  3     2013
  1     2013
  9     2013

值不正确,可以重复。

我想自动将这些值一个一个地传递给函数参数:

 SELECT WeekNo 
 FROM   _GLOBALDB.dbo.fn_WeekNoListInMonth(a.Months, a.Years)

结果将显示该特定月份中的几周。例如:

 SELECT MIN(WeekNo) 
 FROM   fn_WeekNoListInMonth(5, 2013)

预期结果:

 WeekNO
 ------
   18
   19
   20
   21

我已经尝试过了:

 SELECT MIN(WeekNo) 
 FROM fn_WeekNoListInMonth(A.Months, A.Years)

但是显示错误:

  

无法绑定多部分标识符“ A.Months”。
  多部分标识符“ t.Months”无法绑定。

2 个答案:

答案 0 :(得分:1)

您应该能够在SQL Server 2005中使用cross apply

SELECT . . .
FROM TABLE A CROSS APPLY
     dbo.fn_WeekNoListInMonth(month(a.RequestDate), year(a.RequestDate))

答案 1 :(得分:0)

;with cte as ( 
SELECT DATEPART(MONTH, RequestDate) as Months, DATEPART(YEAR, RequestDate) as Years
 FROM TABLE 
 )
SELECT WeekNO  FROM cte A 
CROSS APPLY dbo.fn_WeekNoListInMonth(month(A.Months, A.Years)