我在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
这个值,我需要添加T2.date < T1.date
新列作为指标,值为'1',否则为'0'。我只能使用select查询或SQL脚本,没有insert或update语句。
预期结果:
---------------------------------------- | 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上的查询或脚本。
如果T2.value中存在T1.value而该值存在T2.date <T1.date,则需要将T1新列添加为值为“1”的指示符,否则为“0”。
用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
你可以使用correlated subquery
select T1.*,
( select sign(count(1)) from T2 where T2.date < T1.date and T2.value = T1.value )
as indicator
from T1;
sign()
函数返回1,前提是满足条件的行至少有一行