1

Oracle Database 11g を使用しています。テーブルから ID と日付を選択するクエリがあります。基本的に、私がやりたいことは、同じ ID を持つ行をまとめて保持し、それらの行の「グループ」を「グループ」の最新の日付で並べ替えることです。

したがって、私の元の結果がこれだった場合:

ID   Date
3    11/26/11
1    1/5/12
2    6/3/13
2    10/15/13
1    7/5/13

私が望んでいる出力は次のとおりです。

ID   Date
3    11/26/11     <-- (Using this date for "group" ID = 3)
1    1/5/12
1    7/5/13       <-- (Using this date for "group" ID = 1)
2    6/3/13
2    10/15/13     <-- (Using this date for "group" ID = 2)

これを行う方法はありますか?

4

3 に答える 3

1

集計で関数を使用しMAX ... KEEPて、並べ替えキーを作成できます。

with 
  sample_data as
   (select 3 id, to_date('11/26/11','MM/DD/RR') date_col from dual union all
    select 1,  to_date('1/5/12','MM/DD/RR') date_col from dual union all
    select 2, to_date('6/3/13','MM/DD/RR') date_col from dual union all
    select 2, to_date('10/15/13','MM/DD/RR') date_col from dual union all
    select 1, to_date('7/5/13','MM/DD/RR') date_col from dual)
select 
  id,
  date_col,
  -- For illustration purposes, does not need to be selected:
  max(date_col) keep (dense_rank last order by date_col) over (partition by id) sort_key
from sample_data
order by max(date_col) keep (dense_rank last order by date_col) over (partition by id);
于 2013-07-25T15:07:27.063 に答える
1

分析関数を使用したクエリは次のとおりです。

select 
  id
, date_
, max(date_) over (partition by id) as max_date
  from table_name
  order by max_date, id 
;
于 2013-07-25T15:32:17.133 に答える