我有以下查询
SELECT q.pol_id
FROM quot q
,fgn_clm_hist fch
WHERE q.quot_id = fch.quot_id
UNION
SELECT q.pol_id
FROM tdb2wccu.quot q
WHERE q.nr_prr_ls_yr_cov IS NOT NULL
对于该结果集中的每一行,我想在另一个表中创建一个新行(称之为table1)并使用从插入行中生成的主键更新quot表中的pol_id(来自上面的结果集)表1
table1有两列。 id和时间戳。
我正在使用db2 10.1。
我尝试了很多事情并且在很长一段时间内都没有成功。谢谢!
答案 0 :(得分:0)
简单的解决方案:为查询的结果集创建一个新表,其中包含identity column。然后,在运行查询后,使用结果表中新生成的ID更新pol_id
字段。
另外,您可以使用ROW_NUMBER()
OLAP函数手动执行此操作,我经常发现这对于创建ID非常方便。为此,使用存储过程很方便,该过程执行以下操作:
从Table1
获取最大旧ID,并将其写入变量old_max_id
。
生成结果集后,将行号写入table1
,可能是类似
INSERT INTO TABLE1
SELECT ROW_NUMBER() OVER (PARTITION BY <primary-key> ORDER BY <whatever-you-want>)
+ OLD_MAX_ID
, CURRENT TIMESTAMP
FROM (<here comes your SQL query>)
将结果集写入表中或将游标返回给它。在这里,您应使用与上述相同的ROW_NUMBER
语句,或直接使用Table1
中的ID。