【问题标题】:Postgresql use first row value in nextPostgresql 在下一个使用第一行值
【发布时间】:2021-03-27 04:13:14
【问题描述】:

你好,我有这样的表:

  A | b | c |
--------------
 1  | 0 | 
 2  | 1 | 
 3  | 1 | 
 4  | 2 | 

我需要这样的结果:

 A | b | c |
--------------
 1  | 0 | 0     -   0 + 0     0 b value from first row   ,   0 - b value
 2  | 1 | 1     -   0 + 1     0 b value from first row   ,   1 - b value
 3  | 1 | 1     -   0 + 1     0 b value from first row   ,   1 - b value
 4  | 2 | 2     -   0 + 2     0 b value from first row   ,   2 - b value

C 列是 b + b 的第一行。 我现在关于 LAG 以获得预览值,但总是首先怎么样。 如何得到如表所示的结果?

PostgreSQL 10

问候

【问题讨论】:

  • 你想得到什么结果?这两张表中的哪一张代表您已经拥有的?
  • 两者都呈现相同的情况。 C列将被计算。一开始它是空的。
  • 好的,我已经纠正了我的问题。

标签: postgresql


【解决方案1】:

使用FIRST_VALUE()窗口函数:

SELECT A, b,
       b + FIRST_VALUE(b) OVER (ORDER BY A) c
FROM tablename

或者如果你想更新表格:

UPDATE tablename  
SET c = b + (SELECT DISTINCT FIRST_VALUE(b) OVER (ORDER BY A) FROM tablename)

或者:

UPDATE tablename  
SET c = b + (SELECT b FROM tablename ORDER BY A LIMIT 1)

请参阅demo。

【讨论】:

  • 感谢您的奉献。
猜你喜欢
  • 2022-01-19
  • 1970-01-01
  • 2017-11-06
  • 2012-11-03
  • 2017-11-03
  • 1970-01-01
  • 2017-04-05
  • 2020-09-04
  • 1970-01-01
相关资源
最近更新 更多