Как вставить вывод CTE в временную таблицу в Oracle? - PullRequest
0 голосов
/ 04 мая 2018

В Oracle я пытаюсь вставить вывод CTE во временную таблицу, используя приведенный ниже код, но он выдает ошибку. Я не хочу заранее создавать временную таблицу, она должна создаваться динамически с именами столбцов и типами данных из CTE.

with cte as (
select ORDER_ID, STATUS_ID, CALL_DATE, SHIP_DATE,
       UPDATE_USER_ID,  UPDATE_TIMESTAMP,
       row_number() over(partition by ORDER_ID order by update_timestamp desc) as rowno 
FROM ORDER_HISTORY
where ORDER_ID in (1001,1002, 1003)
)
create table temp_recent_order as
select * from cte where rowno=1

1 Ответ

0 голосов
/ 04 мая 2018

Просто замените порядок для create table выписки, как показано ниже:

create table temp_recent_order as
with cte as (
select ORDER_ID,
       STATUS_ID,
       CALL_DATE,
       SHIP_DATE,
       UPDATE_USER_ID,
       UPDATE_TIMESTAMP,
       row_number() over(partition by ORDER_ID order by update_timestamp desc) as rowno
  from ORDER_HISTORY
 where ORDER_ID in (1001, 1002, 1003)
)
select * from cte where rowno=1;
...