2014-12-05 55 views
0

我有一個返回下列數據的查詢:返回最近的記錄與外部連接

F_id - P_id - Date 
---------------------- 
1001 - 0121 - 01/01/14 
NULL - 0122 - NULL 
1002 -- 01/06/14 
1003 -- 01/04/14 
NULL - 0124 - NULL 
1004 - 0125 - 01/04/14 
1005 - 0125 - 02/04/14 
1006 - 0125 - 07/07/14 

F_ID是表格ID,p_id的是一個人標識符是外從另一個表連接和日期是表單輸入日期。 並非所有的人都有表格,有的有一個,有的有幾個。 我想要做的是帶回列表中每個人的最新F_id和Date,但如果他們沒有輸入表單,則將其保留爲NULL。 像這樣:

F_id - P_id - Date 
-------------------------- 
1001 - 0121 - 01/01/14 
NULL - 0122 - NULL 
1003 -- 01/04/14 
NULL - 0124 - NULL 
1006 - 0125 - 07/07/14 

我已經在以各種方式使用MAX(F_ID)試過了,但沒有運氣。 有沒有人有任何建議?

在此先感謝!

+0

您需要告訴我們您正在使用的平臺 - oracle或ms服務器。 – Hogan 2014-12-05 16:01:32

回答

0

這可能會實現,如果你當前的SQL是

select blah from blah 

將其更改爲

select * from 
(
    select blah, 
     row_number() over (partition by p_id order by F_id desc) as rn 
    from blah 
) t 
where t.rn = 1 

您可能需要

 row_number() over (partition by p_id order by coalesce(F_id,0) desc) as rn 

不知道把我的頭頂部 - 看看結果是否不同。