表:detail1SQL查詢迭代像對於每個
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
表:detail2
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
--------
這個工作似乎不錯,當查詢執行對一個ln_id在時刻,但我們的預期是這一相同類型的查詢應執行對一個以上的IDS一次。
是否有可能爲每個添加種類或添加任何其他位置或IN Condtion來傳遞不同的iD?因爲在子查詢ln_id硬編碼不知道如何使用一個和另一個,並執行..
任何幫助將apperciated。
這是怎麼表2 mod_date是被取出。我的意思是PIC哪一行,是基於什麼condition.And萬一有表1中只有一條記錄,那麼這將是第一個和最後一個日期 –
這兩個表結合ln_id。如果detail2表中有多條記錄,我應該從中選擇最新記錄。如果第一個表中只有一條記錄,它將返回null或相同記錄。 – user2309604