在 MAX() OVER PARTITION 中包含 NULL

McA*_*hey 0 sql oracle analytic-functions oracle10g window-functions

我有一个 Oracle 查询,我想在合并 NULL 时通过 PARTITION 返回 MAX()。

例如,如果原始数据是:

姓名 | 日期
-----------------------
亚当 | 01/21/14 00:00
亚当 | 
亚当 | 01/22/14 00:01
亚当 | 01/23/14 00:02

使用以下查询返回以下内容:

MAX(date) OVER (PARTITION BY name ORDER BY date)
Run Code Online (Sandbox Code Playgroud)
姓名 | 日期
-----------------------
亚当 | 01/21/14 00:00
亚当 | 01/22/14 00:01
亚当 | 01/23/14 00:02
亚当 | 01/23/14 00:02

是否有可能让它像 NULL 是一个 MAX() 值一样,所以它会返回以下内容?

姓名 | 日期
-----------------------
亚当 | 01/21/14 00:00
亚当 | 
亚当 | 
亚当 | 

ype*_*eᵀᴹ 5

是的,您可以使用解析函数:

FIRST_VALUE(date_col) OVER (PARTITION BY name ORDER BY date_col DESC NULLS FIRST)
Run Code Online (Sandbox Code Playgroud)

SQL-Fiddle测试