首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >- SELECT失败时的teradata SQL案例。3771: CASE表达式的WHEN子句中存在非法表达式

- SELECT失败时的teradata SQL案例。3771: CASE表达式的WHEN子句中存在非法表达式
EN

Stack Overflow用户
提问于 2020-12-16 02:33:39
回答 1查看 75关注 0票数 0

我试图通过不同的时间段对数据进行分组,但我做不到。我想把这些时间段命名为“入职”和“生活中”,但Terdata不让我这么做。有人知道为什么我的when子句是非法的吗?

代码语言:javascript
运行
复制
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'
;

请帮帮忙

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-16 02:40:05

您正在组合简单的case语句和搜索到的case语句。去掉第一个MONTHS_BETWEEN子句。

代码语言:javascript
运行
复制
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'
...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65311693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档