postgreSQL(最新)を使用しています。私は全然ノブです。隣り合わせのSQLペアを組み合わせる
が、私はいつも私にrows-重複なしの偶数(文字が一意キーに類似している)と無ヌルのテーブルを与えるビューを持っている、のは呼ぶことにしましょう、それはletter_view:
| letter |
|-------------|
| A |
| B |
| C |
| D |
| E |
| F |
| G |
| H |
私の見解をORDER BY
句を使用しているので、テーブルはあらかじめソートされています。
私がしようとしているのは、2つの行を1つの行にマージすることです。 これらの2つの行のそれぞれの値を使用します。したがって、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)
私はSOの他のいくつかの答えをチェックし、 PostgreSQLのドキュメントとW3C SQLを通じて見えました私は簡潔な答えを見つけることができません。
この手法は何と呼ばれ、どのようにすればよいでしょうか?
可能であれば、純粋なSQLでこれを実行しようとしています。
LIMITとOFFSETを使って複数のクエリを使用して複数の選択肢を持つ、または潜在的にカーソルを使用してデータを取得することができますが、大きな入力セットでは非常に非効率的です。もう一度、合計のnoob。
正しい方向への助けがあれば幸いです。
'partition by 2'は2つのグループに分割しようとしていましたが、私がその値を変更しても結果は変わらないことが分かりました。 'partition by 'を正しく使用する方法がわからない – user7015381
@ user7015381 。 。データを別々のグループに分割したい場合は、 '' by by by ''を使います。例えば、 '' source ''カラムがあり、各 '' source''に対してこれをしたいとします。 –