sql >> Database teknologi >  >> RDS >> Oracle

Bestilling af strengene under sammenkædning i orakel

for at få en bestilt liste, er der et par måder. den enkleste er :

select id, str
  from (select id, 
               wm_concat('level : ' || to_char(nvl(eventDate,SYSDATE - 365 * 100))) 
                 over (partition by id order by eventdate) str,
               row_number() over (partition by id order by eventdate desc) rn
         from Mytable)
 where rn = 1;

eller hvis du bruger det "stragg" brugerdefinerede aggregat:

  select id, str
  from (select id, 
               string_agg('level : ' || to_char(nvl(eventDate,SYSDATE - 365 * 100))) 
                 over (partition by id order by eventdate) str,
               row_number() over (partition by id order by eventdate desc) rn
         from Mytable)
 where rn = 1;

f.eks.

SQL> select id, str
  2    from (select id,
  3                 string_agg('level : ' || to_char(nvl(eventDate,SYSDATE - 365 * 100)))
  4                   over (partition by id order by eventdate) str,
  5                 row_number() over (partition by id order by eventdate desc) rn
  6           from Mytable)
  7   where rn = 1;

        ID STR
---------- ----------------------------------------------------------------------
         1 level : 27-MAR-08,level : 27-JAN-09,level : 02-APR-10
         2 level : 07-JUN-06,level : 02-NOV-08,level : 27-DEC-08
         3 level : 27-MAR-06,level : 02-APR-10,level : 27-JUL-10



  1. Envers + MYSQL + List<String> =SQLSyntaxErrorException:Den angivne nøgle var for lang;

  2. Hvordan kan man sammenkæde mange rækker med samme id i sql?

  3. Hvad er det egentlig en BLOB i en DBMS sammenhæng

  4. Lukning af en MySQL-forbindelse i PHP