在MAX()OVER PARTITION中包含NULL

时间:2014-01-22 17:43:17

标签: sql oracle oracle10g window-functions analytic-functions

我有一个Oracle查询,我想在PARTITION上返回一个MAX(),同时包含NULL。

例如,如果原始数据是:

NAME   |  DATE
-----------------------
ADAM   | 01/21/14 00:00
ADAM   | 
ADAM   | 01/22/14 00:01
ADAM   | 01/23/14 00:02

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

MAX(date) OVER (PARTITION BY name ORDER BY date)
NAME   |  DATE
-----------------------
ADAM   | 01/21/14 00:00
ADAM   | 01/22/14 00:01
ADAM   | 01/23/14 00:02
ADAM   | 01/23/14 00:02

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

NAME   |  DATE
-----------------------
ADAM   | 01/21/14 00:00
ADAM   | 
ADAM   | 
ADAM   | 

1 个答案:

答案 0 :(得分:4)

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

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

SQL-Fiddle

进行测试