如何在SAP HANA中使用WITH CLAUSE ... INSERT查询?

时间:2017-02-27 14:00:51

标签: sql sql-insert common-table-expression hana

这里我使用了AS Clause.if我使用SELECT查询它工作正常,但如果我使用插入查询。它给出了语法错误。     我们可以在SAP HANA中使用WITH .... INSERT吗?

代码:

WITH t1 as
(
  Select 
  col1,
 col2,
 col3
  from table1),

t2 as
(
select 
a.col4,
a.col5,
a.col1,
b.col3
from table2 a 
left outer join t1
on a.col1 = b. col1)
insert into table3
select
c.col4,
c.col5,
c.col3
from t2;

2 个答案:

答案 0 :(得分:1)

除了Serban的正确答案之外,缺乏CTE功能的一般解决方法是创建视图。 在您的情况下可能是:

create view t1 as
(select 
        col1,
        col2,
        col3
 from 
        table1);

create view t2 as
(select 
      a.col4,
      a.col5,
      a.col1,
      b.col3
 from 
      table2 a 
 left outer join t1
              on a.col1 = b. col1);

insert into table3
select
      c.col4,
      c.col5,
      c.col3
from t2;

答案 1 :(得分:0)

根据我对HANA的了解,INSERT子句目前不支持CTE(基于WITH的查询)。这意味着您应该尽可能直接使用子查询。

IMO,唯一没有CTE就无法创建的场景是递归查询(HANA完全不支持)。由于您的查询不是递归的,您可以按如下方式重新编写和简化:

INSERT INTO TABLE3
SELECT T2.COL4, T2.COL5, T1.COL3 
    FROM TABLE1 AS T1 
    LEFT OUTER JOIN TABLE2 AS T2
    ON T1.COL1 = T2.COL1