teradata SQL CASE WHEN - SELECT 失败。 3771: CASE 表达式的 WHEN 子句中的非法表达式
teradata SQL CASE WHEN - SELECT Failed. 3771: Illegal expression in WHEN clause of CASE expression
我正在尝试按不同类型的时间段对数据进行分组,但我没有这样做。我想将这些时间段命名为 'onboarding' 和 'in-life',但 Terdata 不允许。
有人知道为什么它一直抱怨说我的 when 子句是非法的吗?
SELECT
CASE
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE))
WHEN
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) > 0
AND
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) < 3 then 'onboarding'
WHEN
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) > 3
AND
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) < 18 then 'in-life'
else 'eop'
END AS life_cycle,
COUNT (*) Number_of_contracts
FROM
VT_DM_CUMULATIVE_EXT.mobile_events
GROUP BY
life_cycle
WHERE
business_dt='2020-11-30'
;
请帮助
您正在合并简单的和搜索过的案例陈述。
删除第一个 MONTHS_BETWEEN 子句。
SELECT
CASE
WHEN
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) > 0
AND
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) < 3 then 'onboarding'
...
我正在尝试按不同类型的时间段对数据进行分组,但我没有这样做。我想将这些时间段命名为 'onboarding' 和 'in-life',但 Terdata 不允许。 有人知道为什么它一直抱怨说我的 when 子句是非法的吗?
SELECT
CASE
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE))
WHEN
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) > 0
AND
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) < 3 then 'onboarding'
WHEN
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) > 3
AND
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) < 18 then 'in-life'
else 'eop'
END AS life_cycle,
COUNT (*) Number_of_contracts
FROM
VT_DM_CUMULATIVE_EXT.mobile_events
GROUP BY
life_cycle
WHERE
business_dt='2020-11-30'
;
请帮助
您正在合并简单的和搜索过的案例陈述。 删除第一个 MONTHS_BETWEEN 子句。
SELECT
CASE
WHEN
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) > 0
AND
MONTHS_BETWEEN (business_dt, CAST(LOYALITY_START_DATE_CRM AS DATE)) < 3 then 'onboarding'
...