SQLで最新の年度ごとに従業員コードごとのレコードを取得する方法


  1. サブクエリと結合を使用する方法:
SELECT t1.*
FROM your_table t1
JOIN (
  SELECT emp_code, MAX(fn_year) AS max_year
  FROM your_table
  GROUP BY emp_code
) t2 ON t1.emp_code = t2.emp_code AND t1.fn_year = t2.max_year;
  1. WINDOW関数を使用する方法:
SELECT *
FROM (
  SELECT *,
         ROW_NUMBER() OVER (PARTITION BY emp_code ORDER BY fn_year DESC) AS rn
  FROM your_table
) t
WHERE rn = 1;
  1. EXISTS句を使用する方法:
SELECT t1.*
FROM your_table t1
WHERE NOT EXISTS (
  SELECT 1
  FROM your_table t2
  WHERE t2.emp_code = t1.emp_code AND t2.fn_year > t1.fn_year
);

これらのコード例では、"your_table"というテーブル名を使用しています。必要に応じて、実際のテーブル名に置き換えてください。