【发布时间】:2016-01-14 18:30:44
【问题描述】:
我正在尝试创建一个包含 CTE 的视图。我的总体目标是从 CTE 中选择最大日期,但如果该日期为 NULL,则将其转换为 DATETIME,最后通过将日期与 CTE 进行比较来选择大于最大日期的日期。
我知道这听起来令人困惑,但下面是我的查询(希望它更清晰):
;WITH cte (MaxDate) AS (
SELECT MAX(date) AS MaxDate
FROM ServerA.tableNameA
)
UPDATE cte
SET MaxDate = CONVERT(DATETIME, 0)
WHERE MaxDate IS NULL
SELECT top 1000 c1, c2,..etc
FROM ServerB.tableNameA
WHERE date > (SELECT MaxDate
FROM cte)
我认为在线阅读我不允许在 CTE 之后进行 UPDATE 和 SELECT,那么我该怎么做呢?
【问题讨论】:
-
您可以从 CTE 更新。但是这里不更新表字段,你改变
Max()的值,cte之后不能更新和选择,只有一个 -
您也不能在视图内更新。
-
@StuartAinsworth 是的,你可以更新一个 cte 并反映在桌子上stackoverflow.com/questions/11562536/…
-
如果 Max(Date) 为空,那么所有字段都没有日期,那么您的查询到底会返回什么?
-
@JamieD77 ServerA.tableNameA ServerB.tableNameA
标签: sql-server common-table-expression