sql >> データベース >  >> RDS >> Oracle

Oracleで連結しながら文字列を順序付ける

    順序付きリストを取得するには、いくつかの方法があります。最も単純なのは:

    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;
    

    または、「stragg」ユーザー定義集計を使用している場合:

      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;
    

    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. 結合を使用した更新-マルチDB/テーブル

    2. MySQLを使用して連続範囲をグループ化する方法

    3. mysqlにwhere条件を無視させる

    4. while($ row =mysql_fetch_assoc($ result))-$ rowをforeachする方法は?