non's Labo

その日付で最新のレコードを取得するSQL

2018/12/31 7:37

その日付で最新のレコードを取得するSQL

よく考えたらめちゃくちゃ簡単なんだけど、たどり着くまでに少しハマったので、一応記事にして残りておくことにしました。

前提

これにはいくらか想定できるパターンがあるが、仮に税率が保存されているテーブルとしましょう。

カラムは2つで1つは税率適応日(apply_start_date)。もう1つは税率(tax_rate)とします。

次にあるテーブルがあってそのカラムの1つに日付(example_date)が保存されているものとするとこうなります。

 

SELECT
*
FROM example
INNER JOIN tax
ON tax.apply_start_date <= example.example_date
AND tax.apply_start_date = (
    SELECT
        MAX(tax.apply_start_date)
    FROM tax
) 

考え方

そのレコード以下のtaxレコードを取得してその中から最大日時を取得し、それをJOINするだけです。

めちゃくちゃ簡単なんだけど、こいついたどり着くのに結構時間食ってしまった・・・

以外と出番が多いので、覚えておくと便利ですよ。