0
在类似查询的查询中使用多个表值函数时,SSMS会引发错误。另外,[PRECALCPAGES_asof]的[Date]参数以红色下划线。FROM中的多个UDF的参数重复使用会引发无效的列名称错误
我想了解为什么会失败。我认为这可能与SQL Server引擎的工作方式有关。已经查阅了MSDN上的文档,但不幸的是我不知道要寻找什么。为什么会造成这种情况并解决它?
查询
SELECT
[Date]
, COUNT(*)
FROM
[Warehouse].[dbo].[DimDate]
CROSS APPLY
[PROJECTS_asof]([Date])
INNER JOIN
[PRECALCPAGES_asof]([Date]) ON [PRECALCPAGES_asof].[PROJECTID] = [PROJECTS_asof].[PROJECTID]
GROUP BY
[Date]
错误
Msg 207, Level 16, State 1, Line 9
Invalid column name 'Date'.
功能
CREATE FUNCTION [ProfitManager].[PROJECTS_asof]
(
@date DATETIME
)
RETURNS TABLE AS
RETURN
(
SELECT
[PROJECTID]
, [PROJECT]
, ...
FROM
Profitmanager.[PROJECTS_HISTORY]
WHERE
[RowStartDate] <= @date
AND
[RowEndDate] > @date
)
GO
CREATE FUNCTION [ProfitManager].[PRECALCPAGES_asof]
(
@date DATETIME
)
RETURNS TABLE AS
RETURN
(
SELECT
[PAGEID]
, [PAGENAME]
, ...
FROM
Profitmanager.[PRECALCPAGES_HISTORY]
WHERE
[RowStartDate] <= @date
AND
[RowEndDate] > @date
)
GO
非常感谢,这是我一直在寻找的答案! – RB84
太好了,谢谢!如果解决了您的问题,请将答案标记为已接受。 – SAS
你也许知道它为什么这样工作? – RB84