0

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

例如,如果原始数据是:

姓名 | 日期
----------------------
亚当 | 2014 年 1 月 21 日 00:00
亚当 |
亚当 | 2014 年 1 月 22 日 00:01
亚当 | 2014 年 1 月 23 日 00:02

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

MAX(date) OVER (PARTITION BY name ORDER BY date)
姓名 | 日期
----------------------
亚当 | 2014 年 1 月 21 日 00:00
亚当 | 2014 年 1 月 22 日 00:01
亚当 | 2014 年 1 月 23 日 00:02
亚当 | 2014 年 1 月 23 日 00:02

是否可以让它表现得好像 NULL 是一个 MAX() 值,所以它会返回以下内容?

姓名 | 日期
----------------------
亚当 | 2014 年 1 月 21 日 00:00
亚当 |
亚当 |
亚当 |
4

1 回答 1

5

是的,您可以使用分析功能:

FIRST_VALUE(date_col) OVER (PARTITION BY name ORDER BY date_col DESC NULLS FIRST)

SQL-Fiddle进行测试

于 2014-01-22T18:01:36.243 回答