使用日期参数添加 case 语句时出错 "Operand type clash: date is incompatible with int"

Error when adding case statement using date paramaters "Operand type clash: date is incompatible with int"

我有一个查询,目标是允许用户将开始和结束日期传递给范围内的 select 客户销售。此外还有两个子查询,一个获取客户的第一个订单日期,另一个获取客户在 selected 日期范围之前的最后一个订单日期。

查询工作正常,直到我添加一个案例语句,尝试根据新客户状态和客户重新登机状态创建一些客户分组。

我曾多次尝试重新设计子查询,但我认为问题出在 case 语句中。关于别名,当前配置有点混乱,子查询堆叠在一起而不是单独连接,因此命名约定很奇怪,但同样,查询一直有效,直到我尝试添加 case 语句。

不幸的是,我不太了解可能是什么问题,因此非常感谢您的帮助。案例陈述如下。

返回的错误是

Operand type clash: date is incompatible with int

代码:

CASE 
   WHEN LAST_ORD.FIRST_ORDER BETWEEN @START_DATE AND @END_DATE 
      THEN 'NEW IN SELECTED PERIOD'
   WHEN LAST_ORD.FIRST_ORDER <= @END_DATE - 365 
      THEN 'NEW IN LAST YEAR'
   WHEN LAST_ORD.LAST_ORDERED < @START_DATE - 730 
      THEN 'REBOARDED 2+Y INACTIVE'
   WHEN LAST_ORD.LAST_ORDERED < @START_DATE - 365 
      THEN 'REBOARDED 1+Y INACTIVE'
   ELSE 'ACTIVE CUSTOMER'
END AS CUST_HIST

你需要dateadd

CASE WHEN LAST_ORD.FIRST_ORDER BETWEEN @START_DATE AND @END_DATE THEN 'NEW IN SELECTED PERIOD'
   WHEN LAST_ORD.FIRST_ORDER <= DATEADD(day,- 365,@END_DATE ) THEN 'NEW IN LAST YEAR'
   WHEN LAST_ORD.LAST_ORDERED < DATEADD(day,- 730,@START_DATE )  THEN 'REBOARDED 2+Y INACTIVE'
   WHEN LAST_ORD.LAST_ORDERED < @DATEADD(day,- 365,@START_DATE )THEN 'REBOARDED 1+Y INACTIVE'
   ELSE 'ACTIVE CUS