postgresql:根据日期更新选定列中的行

时间:2015-01-30 11:57:12

标签: sql postgresql

我有一个表格t1,其中列和行为

date(date)         plan(numeric)    actual(numeric)
2015-01-01               50           36
2015-01-02               60           45
2015-01-03               70           40
2015-01-04               80           36

我希望相对于日期更改行(仅在计划列中)。例如,我想要更改行属于2015-01-01到2015-01-30。

预期产量:

date(date)         plan(numeric)    actual(numeric)
    2014-12-31               45           50
    2015-01-01               50           36
    2015-01-02               50           45
    2015-01-03               50           40
    2015-01-04               50           36
        .
        .
    2015-01-28               50           20

有人可以告诉我我该怎么做。 谢谢

3 个答案:

答案 0 :(得分:2)

UPDATE t1 SET plan = 50 WHERE date >= '2015-01-01' AND date <= '2015-01-30'

答案 1 :(得分:0)

如果我理解正确,您希望月份的第一个值为整个月的值。

通过查询,您可以执行以下操作:

select date,
       first_value(plan) over (partition by extract(year from date), extract(month from date)
                              ) as plan,
       actual
from t1;

答案 2 :(得分:0)

update table t1 
set plan = 50 
where date >= to_date('2015-01-01' ,'yyyy-MM-dd') 
      and date <= to_date('2015-01-30' ,'yyyy-MM-dd')