我正在尝试创建一个包含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之后进行更新和选择,所以我该如何解决这个问题?
答案 0 :(得分:2)
只需改善您的cte以返回正确的值,您就不需要更新
;WITH cte (MaxDate) AS (
SELECT CASE
WHEN MAX(date) IS NULL THEN CONVERT(DATETIME, 0)
ELSE MAX(date)
END AS MaxDate
FROM ServerA.tableNameA
)
SELECT top 1000 c1, c2,..etc
FROM ServerB.tableNameA
WHERE date > (SELECT MaxDate
FROM cte)