ユーザーごとに最大行を選択:のOracle SQLは - 私はこのようなテーブル持って
PROFILE_ID X_START_DATE X_END_DATE FORMER_EMPLOYER NEW_EMPLOYER START_DATE
1 2015-07-20 2016-07-20 GOOGLE BURGER KING 2017-01-01
1 2003-10-25 2009-01-14 FACEBOOK BURGER KING 2017-01-01
2 2007-10-04 2008-05-05 MICHAELS KFC 2017-01-01
2 2008-05-06 2009-05-05 GOOGLE KFC 2017-01-01
2 2009-05-06 2010-05-05 FACEBOOK KFC 2017-01-01
3 2007-10-04 2008-05-05 MCDONALDS BURGER KING 2017-01-01
私が欲しいもの:各PROFILE_IDに対して
を、私は最新のX_END_DATEを含む行を、必要とします。 PROFILE_ID 1の場合、私は1行などが必要です。
私は:
Select profile_id, max(end_date)
group by 1;
が、私は実際に私が欲しいものを得るではなく、私が必要とするすべての列。列数を増やすことで、私は "groupby"ステートメントでそれらを使用する必要があります。これは私が望むものではありません。
ありがとうございます! Oracleで
私は手で入力するよりも長いリストのためにINを使用しないでください。これは合理的に2つのテーブルスキャンを必要とするかもしれません.1つはグループ用、もう1つはINフィルタ用です。分析を行うには通常1回のスキャンしか必要ありません。大きなテーブルでは大きなパフォーマンス向上が得られます –
あなたは私が別の可能性を含んでいる一方通行に答えました。 JOIN – SriniV
でGROUP BY profile_idを実行すると、クエリがANSI/ISO SQLに準拠します。 – jarlh