私は DISTINCT ON 述語を使用してきましたが、これを GROUP BY に置き換えることにしました。これは主に、「SQL 標準の一部ではなく、結果が不確定である可能性があるため、不適切なスタイルと見なされる場合がある」ためです。
履歴テーブルで最新のレコードを選択するために DISTINCT ON を ORDER BY と組み合わせて使用していますが、GROUP BY で同じことを行う方法がわかりません。ある構造から別の構造に移行するための一般的なアプローチは何でしょうか?
例は次のとおりです。
SELECT
DISTINCT ON (f1, f2 ) *
FROM table
ORDER BY f1, f2, datefield DESC;
ここで、(f1,f2) の「最新」のペアを取得します。