sql - 从在 DB2 中使用 WITH 子句的 Select 查询插入故事

标签 sql select insert db2 with-statement

我正在尝试将使用 WITH 子句但出现语法错误的 SELECT 语句的结果插入到表中。我是否遗漏了一些简单的东西,或者 WITH 子句不允许使用 Insert 语句?

with 
  tser_indx as 
    (SELECT ROW_NUMBER() OVER (ORDER BY BUSDATE ASC) AS ROWID, ITEMID, BUSDATE, PRICE)
     FROM prices_history where ITEMID =  12876),

  VALS as 
     (select P1.ITEMID, P1.BUSDATE , P1.PRICE, P1.PRICE / P2.PRICE) as ret 
    FROM  tser_indx p1, tser_indx p2 
    WHERE p1.rowid = p2.rowid + 1)

INSERT INTO RETURNS (ITEMID, TRADEDATE, PRICE, RETURN)
SELECT ITEMID, BUSDATE, PRICE, RET FROM VALS

我收到一条错误消息,指出需要 SELECT 语句而不是 INSERT。似乎无法欺骗 DB2 接受此声明。
我尝试将其重写为
INSERT INTO RETURNS (...) SELECT * FROM (WITH ...)

还是没用。

任何建议将不胜感激。

最佳答案

我相信这种语法应该有效:

INSERT INTO RETURNS (ITEMID, TRADEDATE, PRICE, RETURN)
with 
  tser_indx as 
    (SELECT ROW_NUMBER() OVER (ORDER BY BUSDATE ASC) AS ROWID, ITEMID, BUSDATE, PRICE)
     FROM prices_history where ITEMID =  12876
    ),
  VALS as 
     (select P1.ITEMID, P2.BUSDATE , P1.PRICE, P1.PRICE / P2.PRICE) as ret 
      FROM  tser_indx p1, tser_indx p2 
      WHERE p1.rowid = p2.rowid + 1
     )
SELECT ITEMID, BUSDATE, PRICE, RET FROM VALS;

在 DB2 中,withselect 的一部分.

关于sql - 从在 DB2 中使用 WITH 子句的 Select 查询插入故事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27407895/

相关文章:

mysql - SQL JOIN,还是两个选择?

mysql - 不同条件下的多选计数

php - 选择行与最新日期的SQL PHP

MySQL 从表中选择

database - 从 Joomla 表单字段插入数据库

mysql - 更新索引中使用的列的效率有多低

sql - 准备好的语句中 where = ?, where in (?) 子句的最佳实践?

php - 选择特定的重复数据库值并显示计数

java - JDBC - 将日期插入数据库会产生错误

php - SQL 插入跳过条目