質問: 最新の1行のみを取得する。 個人テーブル、身長テーブル、体重テーブルという3つのテーブルがあり、それぞれ以下の通りの構造となっています。 create table t個人 ( 番号 number(4,0) not null, 名前 varchar(20) not null, ); create table 身長 ( 番号 number(4,0) not null, 更新 number(4,0) not null, 身長number(4,0) not null, ); create table 体重 ( 番号 number(4,0) not null, 更新 number(4,0) not null, 体重number(4,0) not null, ); これら3つのテーブルを用いて以下のようなviewを作りたいのですが... 番号,名前,身長,体重 身長及び体重テーブルに「更新」というフィールドがあり、同じ番号の場合、上書きではなく更新番号を増やしています。 番号,更新,身長 -------------- 0001,0001,0155 0001,0002,0157 0002,0001,0163 0002,0002,0162 最新の情報のみを引っ張るsql文はどのように記述すれば良いのでしょうか。 番号,名前,身長,体重 ------------------- 0001,name,0157,0038 0002,name,0162,0044
回答: select k.番号 as 番号 ,k.名前 as 名前 ,max(s.身長)keep(dense_rank last order by s.更新) as 身長 ,max(t.体重)keep(dense_rank last order by t.更新) as 体重 from 個人 k ,身長 s ,体重 t where k.番号 = s.番号 and k.番号 = t.番号 group by k.番号,k.名前 ;