2017年9月17日日曜日

SQLで最大値の行のみをJOIN [SQL]

開始日で履歴を保持している商品マスタをLEFT JOINしたい場合。

ShohinT(商品マスタ)
| ShohinCD | YYMMDD |

SELECT *
FROM UriageT
LEFT JOIN  ShohinT
ON UriageT.ShohinCD = ShohinT.ShohinCD
AND ShohinT.YYMMDD =
    (SELECT MAX(ShohinT.YYMMDD) AS F1
    FROM ShohinT AS S2
    WHERE S2.ShohinCD = UriageT.ShohinCD
    AND S2.YYMMDD <= UriageT.YYMMDD)

売上テーブルの売上日(UriageT.YYMMDD)以前で最大日の商品マスタをJOIN。ONの中でサブクエリを書けばできた。

SQLServerでもMySQLでも同じそう。

0 件のコメント:

コメントを投稿