あなたはこれを試すことができます(Xは、あなたのテーブルです)。(データとあなたが投稿として)
WITH RECURSIVE R AS (SELECT X.COL1, X.COL2, CAST(X.COL2 AS VARCHAR(100)) AS COMBI, COL3 AS TOT
FROM X
UNION ALL
SELECT X.COL1, X.COL2, CAST(r.COMBI || CAST(',' AS VARCHAR(1)) || X.COL2 AS VARCHAR(100)), X.COL3+R.TOT AS TOT
FROM R
INNER JOIN X ON X.COL2 > R.COL2 AND X.COL1 = R.COL1)
SELECT COL1, COMBI, TOT
FROM R
WHERE LENGTH(COMBI) >LENGTH(COL2)
ORDER BY COL1, LENGTH(COMBI), COMBI
;
出力:
col1 combi tot
1 O1 P1,P2 300
2 O1 P1,P3 400
3 O1 P2,P3 500
4 O1 P1,P2,P3 600
5 O2 P1,P2 300
出力(O1に別の行のP4を追加):
col1 combi tot
1 O1 P1,P2 300
2 O1 P1,P3 400
3 O1 P1,P4 500
4 O1 P2,P3 500
5 O1 P2,P4 600
6 O1 P3,P4 700
7 O1 P1,P2,P3 600
8 O1 P1,P2,P4 700
9 O1 P1,P3,P4 800
10 O1 P2,P3,P4 900
11 O1 P1,P2,P3,P4 1000
12 O2 P1,P2 300
男、私はあなたの答えを持っていて、あなたは*完全に*質問を変えました。 :(以前のバージョンでは、 'string_agg'は単純な解決策でした。https://www.postgresql.org/docs/devel/static/functions-aggregate.html – opatut
クラスの宿題は?それはそうだと言います。) –
母..それはクラスの宿題LOLではありません。私はビジネス上の問題の1つをここで再販売しました –