首页 > 解决方案 > 如何将选择结果存储到同一张表中的新列?

问题描述

我正在使用 IBM 的 DB2。我有一张表 stockdb(date, close) ,我正在计算它的 30 天移动平均值并将其存储到同一张表中。

alter stockdb 
add ma as avg("close") 
over
(order by "date" rows between 29 preceding and current row)
from stockdb;

标签: sqldb2

解决方案


您不能将其作为计算列执行,因为不允许使用窗口函数。改用视图:

create view v_stockdb as 
    select s.*,
           avg("close") over (order by "date" rows between 29 preceding and current row) as ma
    from stockdb s;

推荐阅读