我有一个返回以下数据的查询:
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),但没有运气。 有没有人有任何建议?
提前致谢!
答案 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
不确定我的头脑 - 看看结果是否不同。