是编码的新手。我创建了一个新列,该列使用DateDiff输出任务过期的日期。然后,我想使用CASE WHEN来获取DateDiff的结果,并为其分配一个表达式(逾期60天,逾期30-45天,等等)。但是,此错误出了错,特别是说关键字“ CASE”附近存在“语法不正确”
SELECT t.name, t.Task,DateDiff(day, t.DueDate, GetDate()) As DaysOverdue
CASE WHEN DaysOverdue >= 60 THEN '>60 days Overdue'
WHEN DaysOverdue <=45 And >=30 THEN '30-45 days Overdue'
ELSE 'Current' END as bucket
FROM t
我希望它创建一个名为“ bucket”的新列,该列显示CASE WHEN表达式的结果
name task Daysoverdue bucket
x y 43 30-45 days overdue
a b 64 >60 days overdue
答案 0 :(得分:0)
在DaysOverdue之后,您错过了逗号(,)
在这种情况下也不要使用DaysOverdue别名,请使用DateDiff(day, t.DueDate, GetDate())
您不能使用>和<这样WHEN DaysOverdue <=45 And >=30
来代替
WHEN DateDiff(day, t.DueDate, GetDate()) between 30 And 45
这应该是最后的样子
SELECT t.name, t.Task,DateDiff(day, t.DueDate, GetDate()) As DaysOverdue,
CASE WHEN DateDiff(day, t.DueDate, GetDate())>= 60 THEN '>60 days Overdue'
WHEN DateDiff(day, t.DueDate, GetDate()) between 30 And 45 THEN '30-45 days Overdue'
ELSE 'Current' END as bucket
FROM t