2017-01-31 3 views
1

私は、サブクエリのサブリストに問題 - オラクル

WITH QRY1 AS (.. SOME PL SQL STATEMNT), 
QRY2 (.. SELECT X,Y,Z,QRY1.*), 
QRY3 (.. SOME SELECT * AGAIN USING QRY2) 

し、最終的に

SELECT * FROM QRY3; 

私は

INSERT INTO table_name (a,b,c,d) 
    SELECT * FROM QRY3; 
を行うことができます方法はあり、以下のような何かをしました

答えて

1

CTEをselectの一部として挿入するだけでなく、その前に挿入する必要があります。

INSERT INTO table_name (a,b,c,d) 
WITH QRY1 AS (.. SOME PL SQL STATEMNT), 
QRY2 (.. SELECT X,Y,Z,QRY1.*), 
QRY3 (.. SOME SELECT * AGAIN USING QRY2) 
-- and finally 
SELECT * FROM QRY3; 

クイックデモ:

create table table_name (a number, b number, c number, d number); 

insert into table_name (a,b,c,d) 
with qry1 as (select 4 as d from dual), 
qry2 as (select 2 as b, 3 as c, qry1.* from qry1), 
qry3 as (select 1 as a, qry2.* from qry2) 
select * from qry3; 

1 row inserted. 

select * from table_name; 

     A   B   C   D 
---------- ---------- ---------- ---------- 
     1   2   3   4