【发布时间】:2019-04-24 01:23:31
【问题描述】:
我有一个查询,目标是允许用户通过开始和结束日期来选择范围内的客户销售。此外,还有两个子查询,一个获取客户的第一个订单日期,另一个获取所选日期范围之前客户的最后一个订单日期。
在我添加一个尝试根据新客户状态和客户重新登录状态创建一些客户分组的案例语句之前,查询工作正常。
我曾多次尝试重新设计子查询,但我认为问题出在 case 语句中。关于别名,当前配置有点混乱,子查询是堆叠的,不是单独连接的,所以命名约定很奇怪,但是在我尝试添加 case 语句之前,查询仍然有效。
不幸的是,我不知道可能是什么问题,所以任何帮助将不胜感激。案例陈述如下。
返回的错误是
操作数类型冲突:日期与 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(DAY而不是-和date数据类型
标签: sql sql-server-2008