在PostgreSQL中,将值从行/列单元格复制到另一个行/列单元格-相同的表

nbewdwxp  于 2023-03-22  发布在  PostgreSQL
关注(0)|答案(1)|浏览(201)

我是PostgreSQL的新手。
我试图找到一种方法来复制一个行/列中的单元格的值,到另一个行/列单元格。
我的表现在看起来像这样:
| 识别号|日期|积|价格|
| - ------|- ------|- ------|- ------|
| 1个|二○二二年十月一日|widget-a|一百七十五|
| 第二章|二○二二年十一月一日|widget-a|三百|
| 三个|二○二二年十二月一日|widget-a|四百|
| 四个|2023年1月1日|widget-a|五百|
我创建了'price 2 months earlier'列。我想使用'price'列填充它,如下所示:
| 识别号|日期|积|价格|价格2个月前|
| - ------|- ------|- ------|- ------|- ------|
| 1个|二○二二年十月一日|widget-a|一百七十五||
| 第二章|二○二二年十一月一日|widget-a|三百||
| 三个|二○二二年十二月一日|widget-a|四百|一百七十五|
| 四个|2023年1月1日|widget-a|五百|三百|
任何帮助或建议将不胜感激…谢谢

toiithl6

toiithl61#

我将您的数据导入到DBFIDDLE
以下查询将为您工作:

UPDATE mytable t1
SET "price 2 mos earlier" = t2.price
FROM mytable t2
WHERE t2.product = t1.product
AND t2.date = t1.date - interval '2 months';

它给出了正确的输出:
| 识别号|日期|积|价格|价格2个月前|
| - ------|- ------|- ------|- ------|- ------|
| 1个|二○二二年十月一日|widget-a|一百七十五||
| 第二章|二○二二年十一月一日|widget-a|三百||
| 三个|二○二二年十二月一日|widget-a|四百|一百七十五|
| 四个|2023年1月1日|widget-a|五百|三百|
请尽量使用连续的列名;例如price_2_mos_earlier而不是price 2 mos earlier
否则,您必须在双引号内包含此类列名(列名之间有空格)。

相关问题