sql - 如何将 CTE 输出插入 Oracle 中的临时表?
问题描述
在 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
解决方案
只需替换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;
推荐阅读
- python - 我的代码第一次运行时运行良好,但再次运行时返回此错误:TypeError: 'NoneType' object is not callable。为什么?
- reactjs - 使用表单数据回调请求以响应托管在 IIS 服务器上的应用程序
- python-3.x - 通过比较 pandas 中的两个数据框来计算数据转换百分比
- c++ - 用于包含不同元素的 2 个向量的单个迭代器 (c++)
- flutter - 无法从 Gradle 脚本中找到 signingReport 以在 android studio 中找到 SHA-1 指纹密钥
- javascript - Bootstrap 无法更改选择的选定值
- python - 计算特定形状的区域面积
- javascript - 使用 Python 调用网页上的 JavaScript 函数
- jenkins - 如何根据评论运行不同的管道?
- c - 立即发送到 TCP 套接字 bufferevent_write bufferevent libevent