Postgres 11 以降、ウィンドウを使用します機能 カスタムフレームとframe_exclusion
:
SELECT *, array_combine(values) OVER (ROWS BETWEEN UNBOUNDED PRECEDING
AND UNBOUNDED FOLLOWING
EXCLUDE CURRENT ROW) AS agg_values
FROM tbl;
name
の場合 UNIQUE
ではありません 、そしてあなたが尋ねたので:
SELECT *, array_combine(values) OVER (ORDER BY name
ROWS BETWEEN UNBOUNDED PRECEDING
AND UNBOUNDED FOLLOWING
EXCLUDE GROUP) AS agg_values
FROM tbl;
db <> fiddle こちら
最初の行(も)は、現在の行を除いて、任意の行の順序で機能します。 2つ目は、ORDER BY
が必要です 同じグループに含まれる行を確立します。
大胆な強調鉱山。
これは、カスタム集計関数array_combine(anyarray)
を使用します a_horse提供
。
またはここ: