SAP HANA SQL需求:通过查询为T1生成indicator计算列(无增改)
SAP HANA SQL解决方案:生成indicator列判断条件匹配
我来给你提供一个完全符合要求的SAP HANA SQL查询,全程只用SELECT语句实现,不需要修改原表的任何数据:
SELECT t1.key, t1.value, t1.date, CASE WHEN EXISTS ( SELECT 1 FROM T2 WHERE T2.value = T1.value AND T2.date < T1.date ) THEN '1' ELSE '0' END AS indicator FROM T1;
逻辑解释
这个查询的核心是利用EXISTS子查询来逐条验证T1的记录是否满足你设定的两个条件:
- T2中存在与当前T1记录相同的
value值 - 对应的T2记录的
date早于当前T1记录的date
CASE表达式会根据子查询的结果返回'1'或'0',精准生成你需要的indicator列。
预期执行结果
| key | value | date | indicator |
|---|---|---|---|
| 1 | A | 01-02-2018 | 0 |
| 2 | B | 01-03-2017 | 1 |
| 3 | C | 01-02-2017 | 0 |
| 4 | D | 01-02-2018 | 0 |
注意事项
如果你的date列存储的是字符串类型(而非SAP HANA原生的DATE类型),需要用TO_DATE函数统一转换格式后再做比较,避免日期逻辑错误,示例如下:
SELECT t1.key, t1.value, t1.date, CASE WHEN EXISTS ( SELECT 1 FROM T2 WHERE T2.value = T1.value AND TO_DATE(T2.date, 'DD-MM-YYYY') < TO_DATE(T1.date, 'DD-MM-YYYY') ) THEN '1' ELSE '0' END AS indicator FROM T1;
内容的提问来源于stack exchange,提问作者hakeydotcom
相关产品推荐
相关产品推荐

