我是新来的,所以请放轻松。如何将列值作为函数参数传递?
我可以通过此查询选择月份和年份:
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”无法绑定。
答案 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)