的問題是以下內容:PostgreSQL的先前和下一組值
假設,我有這樣視圖的表(它是我的工作表中的一個子樣品):
| col1 | col2 |
|------|------|
| 1 | a2 |
| 1 | b2 |
| 2 | c2 |
| 2 | d2 |
| 2 | e2 |
| 1 | f2 |
| 1 | g2 |
| 3 | h2 |
| 1 | j2 |
我需要添加兩個新列
prev
包含col1
以前的值不等於當前- 含有
col1
不等於當前
如果不存在先前的值的下一個值,prev
應包含當前col1
的值以及next
應包含的當前值如果不存在下一個值。
結果應該有如下形式:
| col1 | col2 | prev | next |
|------|------|------|------|
| 1 | a2 | 1 | 2 |
| 1 | b2 | 1 | 2 |
| 2 | c2 | 1 | 1 |
| 2 | d2 | 1 | 1 |
| 2 | e2 | 1 | 1 |
| 1 | f2 | 2 | 3 |
| 1 | g2 | 2 | 3 |
| 3 | h2 | 1 | 1 |
| 1 | j2 | 3 | 1 |
我會很感激的任何幫助。
使用lag()和lead()over(order by)窗口函數 –
https://www.postgresql.org/docs/current/static/tutorial-window.html –
SQL表示代表* unordered *集合。沒有「上一個」或「下一個」值,除非列指定了排序。您的數據中沒有任何列看起來像排序數據的明顯列。 –