Oracle 10 データベースに次のテーブルがあります。
ID と関連する日付をリストする TABLE_A:
ID DATE
-----------------------
A1234 | 31-Dec-2008
B5678 | 31-Dec-2009
A1234 | 31-Dec-2010
月末に ID の評価を与える TABLE_B:
ID RATING_DATE RATING
--------------------------------
A1234 | 31-Dec-2008 | 3
A1234 | 31-Jan-2009 | 3
A1234 | 28-Feb-2009 | 3
A1234 | 31-Mar-2009 | 2
A1234 | 30-Apr-2009 | 2
A1234 | 31-May-2009 | 3
A1234 | 31-Jun-2009 | 2
A1234 | 31-Jan-2010 | 3
A1234 | 28-Feb-2010 | 3
B5678 | 31-Dec-2009 | 4
B5678 | 31-Dec-2010 | 4
B5678 | 31-Jan-2011 | 4
B5678 | 28-Feb-2011 | 4
必要なもの:
TABLE_AのすべてのID
,ペアについて、[DATE, DATE + 12 months) の範囲内で最新のものとTABLE_BDATE
のものを見つけたいと考えています。RATING_DATE
RATING
例:については、 2008 年 12 月 31 日から 2009 年 11 月 30 日までの最新のものを見つけたいと考えています。ここではA1234 | 31-Dec-2008
、RATING_DATE
RATING
A1234 | 31-Jun-2009 | 2
最新の を取得するための次の SQL がありますが、同様RATING_DATE
に取得する方法がわかりません。RATING
SELECT A.DATE,
A.ID,
MAX(TABLE_B.RATING_DATE)
FROM TABLE_A A LEFT JOIN TABLE_B B
ON
A.ID = B.ID
AND
B.RATING_DATE >= A.DATE
AND
B.RATING_DATE < ADD_MONTHS(A.DATE, 12)
GROUP BY A.DATE,
A.ID
ネストされた結合や他のサブクエリなしでこれを行う方法はありますか?