【问题标题】:teradata SQL CASE WHEN - SELECT Failed. 3771: Illegal expression in WHEN clause of CASE expressionteradata SQL CASE WHEN - SELECT 失败。 3771: CASE 表达式的 WHEN 子句中有非法表达式
【发布时间】:2021-03-26 10:20:42
【问题描述】:

我正在尝试按不同类型的时间段对数据进行分组,但我没有这样做。我想将这些时间段命名为“入职”和“生活中”,但 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'
;

请帮助

【问题讨论】:

    标签: sql select teradata case-when


    【解决方案1】:

    您正在结合简单和搜索的案例陈述。 去掉第一个 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'
    ...
    

    【讨论】:

      猜你喜欢
      • 2016-01-04
      • 2012-09-20
      • 2012-09-17
      • 2018-04-04
      • 2018-02-01
      • 2021-08-30
      • 1970-01-01
      • 2021-12-27
      • 2021-12-08
      相关资源
      最近更新 更多