使用postgreSQL(最新)。我是一個總noob。SQL配對相鄰行
我有一個觀點,即總是給我一個偶數rows-沒有重複的(字母類似於唯一鍵),並沒有空的表格,讓我們把它letter_view:
| letter |
|-------------|
| A |
| B |
| C |
| D |
| E |
| F |
| G |
| H |
我的看法已經使用ORDER BY
子句,因此該表已預先排序。
我試圖做的是每兩行合併成一行 與這兩個行的每個值。所以對於n行,我需要結果集有 n/2行與組合的相鄰行。
| l1 | l2 |
|-------|------|
| A | B |
| C | D |
| E | F |
| G | H |
我使用lead
試過,我覺得我很接近,但我不能完全得到它在我需要的格式。
我最好的查詢嘗試看起來是這樣的:
SELECT letter AS letter_1, lead(letter, 1) OVER (PARTITION BY 2) AS letter_2 from letter_view;
,但我得到:
letter_1 | letter_2
----------+----------
A | B
B | C <--- Don't need this
C | D
D | E <--- Don't need this
E | F
F | G <--- Don't need this
G | H
H | <--- Don't need this
(8 rows)
我查了那麼幾款其他的答案,並通過 看PostgreSQL文檔和W3C SQL教程,但我找不到一個簡潔的答案。
這是什麼技術,即,我會怎麼做呢?
我想如果可能這樣做純SQL。
我知道我可以使用多個查詢與LIMIT和OFFSET通過使用遊標來獲得多個選擇的數據或可能,但似乎非常低效的大的輸入設置,雖然我可能是完全錯誤的。再次,總noob。
在正確的方向任何幫助,高度讚賞。
2分區是我試圖讓它分成兩組,但我現在意識到,如果我改變該值,它不會改變結果。不確定如何通過 – user7015381
@ user7015381正確使用分區。 。 。如果你想把數據分成不同的組,你可以使用'partition by'分區 - 比如說你有一個「源」列,並且想爲每個「source」做這個。 –