質問: sqlの書き方がわかりません 下記テーブルが access上にあります。 t1 id 日付 01 2011/8/1 01 2011/9/1 02 2011/3/1 03 2011/5/30 t2 id 日付 01 2011/7/1 01 2011/7/30 01 2011/8/1 01 2011/8/2 01 2011/9/2 02 2011/2/11 02 2011/3/1 02 2011/8/1 03 2011/4/30 03 2011/5/29 03 2011/6/30 このデータからt1を元に id 日付1 日付2 01 2011/8/1 2011/8/1 01 2011/9/1 2011/8/2 02 2011/3/1 2011/3/1 03 2011/5/30 2011/5/29 というデータを取得するにはどのようなsqlを書けばよいでしょうか。 具体的にはt1とt2のidが同じで、 t2の日付がt1の日付以下で最大のレコードと紐付けたいのです。
回答: 説明文通りにsqlつくればいいと思いますが。。。 >t1とt2のidが同じで、t2の日付がt1の日付以下 t1.id = t2.id and t1.日付 >= t2.日付 で結合 >最大のレコード t1.id, t1.日付で集約してmax(t2.日付) select t1.id, t1.日付 as 日付1, max(t2.日付) as 日付2 from t1 inner join t2 on t1.id = t2.id and t1.日付 >= t2.日付 group by t1.id, t1.日付;