表: 詳細1
LN_ID LN_DATE LN_CATG
---------- -------- -------
1693834961 8/1/2013 16
1693834961 7/1/2013 16
1693834961 6/1/2013 4
1693834961 5/1/2013 16
1693834962 8/1/2013 16
1693834962 7/1/2013 16
1693834962 6/1/2013 16
1693834962 5/1/2013 5
表: 詳細2
LN_ID LN_MOD_DATE LN_PYMT_DATE
---------- ----------- ------------
1693834961 8/1/2012 1/1/2011
1693834961 9/1/2011 2/1/2011
1693834962 10/1/2012 3/1/2012
結果:
LN_ID FIRST_DT LAST_DT LN_MOD_DT LN_PYMT_DT
---------- -------- -------- --------- ----------
1693834961 8/1/2013 6/1/2013 8/1/2012 1/1/2011
クエリ:
SELECT ln_id, first_dt, last_dt, ln_mod_dt, ln_pymt_dt FROM
(SELECT a.ln_id ln_id, a.ln_date first_dt,
b.ln_date last_dt, c.ln_mod_date ln_mod_dt,
c.ln_pymt_date ln_pymt_dt
FROM detail1 a,
(SELECT *
FROM (SELECT *
FROM detail1
WHERE ln_id = '1693834961'
AND ln_catg <> 16
ORDER BY ln_date DESC)
WHERE ROWNUM < 2) b,
(SELECT *
FROM (SELECT *
FROM detail2
WHERE ln_id = '1693834961'
ORDER BY ln_mod_date DESC)
WHERE ROWNUM < 2) c
WHERE a.ln_id = b.ln_id
AND a.ln_id = c.ln_id
AND a.ln_catg = 16
ORDER BY a.ln_date DESC)
WHERE ROWNUM < 2
各 LN_ID について、detail1 テーブルから連続して ln_catg = 16 である最初の (最新の) 日付と最後の日付を見つける必要があります。
たとえば、期待される出力として、
LN_ID FIRST_DT LAST_DT LN_MOD_DT LN_PYMT_DT
---------- -------- -------- --------- ----------
1693834961 8/1/2013 7/1/2013 8/1/2012 1/1/2011
1693834962 8/1/2013 6/1/2013 8/1/2012 1/1/2012
--------
クエリが一度に 1 つの ln_id に対して実行される場合、これはうまく機能するように見えますが、この同じ種類のクエリは一度に複数の ID に対して実行する必要があると予想されます。
for-each の種類を追加するか、または IN Condtion を別の iD に渡すために他の場所を追加することは可能ですか? サブクエリの ln_id ハードコードは、どのように使用して実行するのかわからないため..
どんな助けでも感謝します。