[POSTRESQL] lub [ORACLE] Łączenie rekordów w stringa

0

Hej,

Jest jakiś sposób jak dla obiektu o ID = 2 mam 90 rekordów (współrzędnych), które są w kolejności po kolumnie INDEX_WSPOLRZEDNEJ i chciałbym to teraz złączyć w jednego długiego stringa dla każdego ID sortując po kolumnie INDEX_WSPOL?

Czyli mam:

ID || WPSOLRZEDNE || INDEX_WSPOL
2 || x,y || 1
2 || x2,y2 ||2
....
2 || x90,y90 || 90

0

W postgres:

CREATE TABLE FOO (
  ID INT,
  WSPOLRZEDNE VARCHAR(20),
  INDEX_WSPOL INT
 );
 
 INSERT INTO FOO VALUES 
(2,'(X1,Y1)',1), 
(2,'(X2,Y2)',2), 
(2,'(X3,Y3)',3), 
(2,'(X4,Y4)',4), 
(2,'(X5,Y5)',5), 
(3,'(A1,B1)',5), 
(3,'(A2,B2)',4), 
(3,'(A3,B3)',3), 
(3,'(A4,B4)',2), 
(3,'(A5,B5)',1);

SELECT ID, POLACZONE FROM (
SELECT
  F.ID,
  STRING_AGG(F.WSPOLRZEDNE,'#') OVER (PARTITION BY F.ID ORDER BY F.INDEX_WSPOL RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) POLACZONE,
  ROW_NUMBER() OVER (PARTITION BY F.ID ORDER BY F.INDEX_WSPOL RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) RN
 FROM FOO F
) G WHERE RN=1;

1 użytkowników online, w tym zalogowanych: 0, gości: 1