- ベストアンサー
日付が直前のレコードを取得する方法
- 購入テーブルと商品マスタを結合して、直前の商品名を取得する方法について説明します。
- 適用開始日を降順にソートし、先頭のレコードを取得することで、直前の商品名を特定します。
- 購入テーブルと商品マスタの結合により、購入日直前に適用されていた商品名を取得することができます。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こうですか? SELECT 商品ランク.商品コード, 商品ランク.購入日, 商品ランク.商品名 FROM ( SELECT @ランク:= IF(@添付商品コード = テーブルA.商品コード, @ランク+1, 1) AS カラム1, @添付商品コード := テーブルA.商品コード as カラム2, テーブルA.* FROM (SELECT 商品マスタ.商品コード, 購入テーブル.購入日, 商品マスタ.商品名e, 商品マスタ.適用開始日 FROM 購入テーブル LEFT JOIN 商品マスタ on 購入テーブル.商品コード = 商品マスタ.商品コード WHERE 購入テーブル.購入日 >= 商品マスタ.適用開始日 ORDER BY 購入テーブル.購入日 ASC, 商品マスタ.商品コード ASC, 商品マスタ.適用開始日 DESC ) as テーブルA CROSS JOIN (SELECT @添付商品コード:=0 , @ランク:=0) AS ダミーテーブル ) as 商品ランク Where 商品ランク.カラム1 = 1 ORDER BY 商品ランク.商品コード ASC, 商品ランク.購入日 ASC
お礼
ありがとうございます。 目的の結果を得ることができました。 CROSS JOIN は思いつきませんでした。 感謝です。