sql >> Databasteknik >  >> RDS >> Oracle

Uppsättningar från ett enda bord, grupperade efter en kolumn

Det här problemet ser faktiskt enklare ut än svaret på frågan du länkade, vilket är en utmärkt lösning på det problemet. Ändå använder detta samma hierarkiska frågor, med connect by

Om det är så att priority är alltid en kontinuerlig sekvens av siffror, kommer detta att fungera

SELECT t.grp, level, ltrim(SYS_CONNECT_BY_PATH(state,','),',')   as "set"  
   from  t 
   start with priority = 1
 connect by   priority = prior priority + 1
            and grp = prior grp

Men om det inte alltid är sant, skulle vi kräva row_number() för att definiera sekvensen baserat på prioritetsordningen (som inte behöver vara ett heltal i följd)

with t2 AS
( 
  select t.*, row_number() 
        over ( partition by grp order by priority) as rn from t
)
SELECT t2.grp, ltrim(SYS_CONNECT_BY_PATH(state,','),',')   as "set"
   from  t2 
   start with priority = 1
 connect by   rn = prior rn + 1
            and grp = prior grp

DEMO



  1. Det går inte att använda utf8mb4 teckenuppsättning med CloudSQL på AppEngine Python

  2. Varning:mysqli_connect():(28000/1045):Åtkomst nekad för användaren

  3. Databasen [dbName] är inte tillgänglig. (ObjectExplorer)

  4. Hur man undkommer enstaka citat (apostrof) i sträng med php