使用外连接返回最近的记录

时间:2014-12-05 15:59:36

标签: tsql

我有一个返回以下数据的查询:

F_id - P_id - Date
----------------------
1001 - 0121 - 01/01/14
NULL - 0122 - NULL
1002 - 0123 - 01/06/14
1003 - 0123 - 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是从另一个表外连接的人员标识符,Date是表单输入的日期。 并非所有人都有表格,有些有一个,有些有几个。 我想要做的是为列表中的每个人带回最近的F_id和Date,但如果他们没有输入表单,则将其保留为NULL。 像所以:

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

我尝试过以各种方式使用MAX(F_id),但没有运气。 有没有人有任何建议?

提前致谢!

1 个答案:

答案 0 :(得分: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

不确定我的头脑 - 看看结果是否不同。