SELECT文の書き方
972990Jan 29 2013 — edited Feb 6 2013create table test ( no varchar2(10),
pk1 varchar2(10),
pk2 varchar2(10),
pk3 date);
ALTER TABLE test ADD CONSTRAINT test_PK PRIMARY KEY (pk1,pk2,pk3) ;
insert into test values('1','pk1','pk2','2010/01/01');
insert into test values('2','pk1','pk2','2010/02/01');
insert into test values('3','pk1','pk2','2010/03/01');
insert into test values('3','pk1','pk2','2010/04/01');
insert into test values('4','pk1','pk2','2010/05/01');
insert into test values('4','pk10','pk20','2010/04/01');
上記のようなテーブルがあり、そのテーブルを検索できる画面があります。
画面上では検索条件をユーザに入力させ、検索結果を表示します。
検索項目はほぼ全部の列で、自由に指定できます。
検索結果として表示させる内容は検索キーに基く最新の日付のデータを主データとし、pk3を除く同一主キーのデータの中で日付が大きいものを2件目のデータとして表示させたいのです。
例えばユーザがno=3で検索した場合、検索キーに基く最新の日付のデータが主データとなります。
insert into test values('3','pk1','pk2','2010/03/01');
insert into test values('3','pk1','pk2','2010/04/01'); → 主データ
2件目のデータはpk3を除く同一主キーのデータの中で日付が最大のものなので以下のデータを表示させたいです。
その際、主データはのぞきます。
insert into test values('1','pk1','pk2','2010/01/01');
insert into test values('2','pk1','pk2','2010/02/01');
insert into test values('3','pk1','pk2','2010/03/01');
insert into test values('4','pk1','pk2','2010/05/01'); →2件目のデータ
例えばユーザがpk1=pk1と検索した場合、検索キーに基く最新の日付のデータが主データとなります。
insert into test values('1','pk1','pk2','2010/01/01');
insert into test values('2','pk1','pk2','2010/02/01');
insert into test values('3','pk1','pk2','2010/03/01');
insert into test values('3','pk1','pk2','2010/04/01');
insert into test values('4','pk1','pk2','2010/05/01'); →主データ
2件目のデータはpk3を除く同一主キーのデータの中で日付が最大のものなので以下のデータを表示させたいです。
その際、主データはのぞきます。
insert into test values('1','pk1','pk2','2010/01/01');
insert into test values('2','pk1','pk2','2010/02/01');
insert into test values('3','pk1','pk2','2010/03/01');
insert into test values('3','pk1','pk2','2010/04/01');→2件目のデータ
2件目のデータを主データをのぞいて検索しなければならない点と順位付けがうまくいかず、困っています。
そして、主データを1、2件目のデータを2というように順位をつけて画面上でソートして表示したいのですが、何かよい方法はありますでしょうか?
非常にわかりづらいかもしれませんが、よろしくお願いいたします。