2014-12-05 31 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 

不知道把我的头顶部 - 看看结果是否不同。