【发布时间】:2014-12-31 22:55:02
【问题描述】:
我收到此查询的最大递归错误。
WITH [Days] AS
(
SELECT DATENAME(weekday,getdate()) AS NameOfDay
,DAY(GETDATE()) AS NumberOfDay
,GETDATE() AS curDate
UNION ALL
SELECT DATENAME(WEEKDAY,DATEADD(day, -1, curDate)) As NameOfDay
,DAY(DATEADD(DAY, -1, curDate)) AS NumberOfDay
,DATEADD(DAY, -1, curDate) AS curDate
FROM [Days]
WHERE DAY(GETDATE()) - DAY(DATEADD(DAY, -1, curDate)) >= 0
)
SELECT NameOfDay
FROM [Days]
ORDER BY NumberOfDay
错误是:
语句终止。在语句完成之前,最大递归 100 已用完。
当我将option (maxrecursion 0) 添加到查询中时,我收到此错误:
向“日期时间”列添加值导致溢出。
我不知道如何解决这些错误。任何帮助将不胜感激。
谢谢。
【问题讨论】:
-
你想达到什么目的?
-
我正在尝试根据当前周获取日期的名称。
-
@Arpita 基于当前周的天数?什么?我不明白。你预计有多少记录?
-
调试此类问题的一个有用技巧是添加一个从 1 开始并向上计数的列。更改终止条件以将计数限制为合理值并检查结果 (*)。您可能希望为您的
WHERE条件中的值添加列,以便更轻松地查看误入歧途的内容。 -
@king.code - 我的意思是今天,我想在表格中显示星期一、星期二和星期三。明天,我想显示星期一、星期二、星期三和星期四。
标签: tsql sql-server-2012