Sql 在分配存储桶时使用CASE

Sql 在分配存储桶时使用CASE,sql,tsql,Sql,Tsql,对编码来说相当陌生。我创建了一个新列,它使用DateDiff输出任务过期的天数。然后我想获取DateDiff的结果,并在需要时使用CASE为其指定一个表达式(>60天过期,30-45天过期,等等)。但是,这个错误被排除了,特别是说“关键字'CASE'附近的语法不正确” 您在DaysOverdue之后漏掉了一个逗号(,) 也不要使用DaysOverdue别名。在这种情况下,请使用DateDiff(day,t.DueDate,GetDate()) 当daysoferdue=30时,不能使用>和和60

对编码来说相当陌生。我创建了一个新列,它使用DateDiff输出任务过期的天数。然后我想获取DateDiff的结果,并在需要时使用CASE为其指定一个表达式(>60天过期,30-45天过期,等等)。但是,这个错误被排除了,特别是说“关键字'CASE'附近的语法不正确”

您在DaysOverdue之后漏掉了一个逗号(,)

也不要使用DaysOverdue别名。在这种情况下,请使用
DateDiff(day,t.DueDate,GetDate())

当daysoferdue=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
您在DaysOverdue之后漏掉了一个逗号(,)

也不要使用DaysOverdue别名。在这种情况下,请使用
DateDiff(day,t.DueDate,GetDate())

当daysoferdue=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

旁白:通常桶的分配方式是相邻的,例如“>60”、“46到60”、“30到45”和“当前”。由于
case
按顺序检查
when
子句,因此您可以检查
>60
>45
>30
else
是否包含活期账户。不需要在
之间使用
。旁白:通常分配存储桶时,它们是连续的,例如“>60”、“46到60”、“30到45”和“当前”。由于
case
按顺序检查
when
子句,因此您可以检查
>60
>45
>30
else
是否包含活期账户。不需要在
之间使用