3

私の目的は、1 つの列で個別に使用することですが、すべての列を返すことです。

私のテーブルはこんな感じです

id, name, year

1, John, 2012

2, Jake, 2012

3, Jenna, 2013

1, John, 2013

ID列で区別し、3つの列すべてと同じIDを返さないようにする必要があります。最新のレコードが必要です。

私が必要とする出力は

id, name, year

1, John, 2013

2, Jake, 2012

3, Jenna, 2013

これら2つのコマンドを試しました

  1. sampletable から個別の ID、名前、年を選択します。すべての行で区別します。

  2. select * from sampletable group by id id 列のみを返し、他の列は削除します。

4

2 に答える 2

1

ウィンドウ関数と分析関数を使用すると、年ごとに並べ替えられた ID でデータを分割し、最初の結果を選択できます。

SELECT id, name, year
FROM 
 (SELECT id, name, year, row_number() over (partition by id order by year desc) as r 
  FROM sampletable) S 
WHERE S.r = 1;

rankさらに、や などdense_rank、さまざまな選択のためのランキング機能もあります。

于 2013-10-14T15:37:52.043 に答える