我在SAP HANA DB中有第一个表T1
,如下所示:
T1 ---------------------------- | key | value | date | ---------------------------- | 1 | A | 01-02-2018 | | 2 | B | 01-03-2017 | | 3 | C | 01-02-2017 | | 4 | D | 01-02-2018 | ----------------------------
另一个表T2:
T2 --------------------- | value | date | ---------------------- | B | 01-02-2017 | | B | 01-05-2017 | | D | 01-02-2019 | ----------------------
如果T1
和T1.value
中存在T2.value
,并且值是'0',则我需要向T2.date < T1.date
的新列添加值为'1'的指示符。我只能为此使用选择查询或SQL脚本,而没有插入或更新语句。
预期结果:
---------------------------------------- | 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 | -----------------------------------------
请提供有关HANA SQL的查询或脚本的帮助。
答案 0 :(得分:3)
如果T1.value,我需要向T1新列添加值为'1'的指示符 T2.value和T2.date
这可以通过EXISTS
解决:
select
t1.*,
case
when exists (
select 1 from t2
where value = t1.value and date < t1.date
) then '1'
else '0'
end indicator
from t1
答案 1 :(得分:1)
您可以使用correlated subquery
select T1.*,
( select sign(count(1)) from T2 where T2.date < T1.date and T2.value = T1.value )
as indicator
from T1;
The sign()
函数返回1,条件是至少有一行满足条件