【发布时间】:2021-03-04 21:38:15
【问题描述】:
我想用第二个表的总和来更新一个表
这是我要更新的表“x”。有一个起始值和一个结束值:
| id | op_date | initial_value | end_value |
|---|---|---|---|
| 1 | 2020-02-01 | 0 | 0 |
| 1 | 2020-02-02 | 0 | 0 |
| 2 | 2020-02-01 | 0 | 0 |
| 2 | 2020-02-02 | 0 | 0 |
表'y'保存当天的数值:
| id | op_date | value_day |
|---|---|---|
| 1 | 2020-01-29 | 500 |
| 1 | 2020-02-01 | 100 |
| 1 | 2020-02-02 | 200 |
| 2 | 2020-01-29 | 750 |
| 2 | 2020-02-01 | 100 |
| 2 | 2020-02-02 | 250 |
我希望结果如下所示:
| id | op_date | initial_value | end_value |
|---|---|---|---|
| 1 | 2020-02-01 | 500 | 600 |
| 1 | 2020-02-02 | 600 | 800 |
| 2 | 2020-02-01 | 750 | 850 |
| 2 | 2020-02-02 | 850 | 1100 |
我试过这个脚本,但是进程只是运行它并没有完成它:
UPDATE x
SET
initial_value= (select sum(y.value_day)
from public.y where
y.op_date > '2020-11-01' and y.op_date < x.op_date
and y.id = x.id),
end_value= (select sum(y.value_day)
from public.y where
y.op_date between '2020-11-01' and x.op_date
and y.id = x.id);
【问题讨论】:
标签: postgresql sum sql-update subquery