SQL脚本:如果其他列中存在值,则新建列1,否则返回0

时间:2019-04-19 09:35:41

标签: sql sap hana

我在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 |
----------------------

如果T1T1.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的查询或脚本的帮助。

2 个答案:

答案 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,条件是至少有一行满足条件

Demo