【发布时间】:2023-03-21 06:44:01
【问题描述】:
我是新来的,所以请放轻松。如何将列值作为函数参数传递?
我有这个查询来选择月份和年份:
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”。
【问题讨论】:
-
那么,您想为
A中的每一行获取fn_WeekNoListInMonth()的所有输出吗?那么,如果 A 中有 10 行,你会得到 40 到 50 行吗?或者您是否需要从函数的输出中获取“A”中的每一行的最小值? -
@Ann L. 所有输出。如果我想获得最低或最高,我只需为最低添加“Min”,为最高添加“max”,对吗?
-
遗憾的是,您使用的是 SQL 2005 ——使用 SQL 2008,这变得容易多了。我正在努力记住我们之前做过的事情。
-
(如果您不尝试获取最高值或最低值,为什么
MIN出现在问题中?) -
我的印象是这个结果不会是最终结果。你希望得到什么信息?也许我们可以避免做这个(我记得的)不合理的困难的事情。
标签: sql sql-server-2005