我将使用Oracle XE 10g。
请您仔细阅读我的问题。尽管我的用例很奇怪,但还是请耐心看完。
假设我有以下记录:
Table person
Name YearOfBirth
a null
a 2001
a 2002
b 1990
b null
c null
c 2001
c 2009
基本上,如果我执行以下查询:
select
p.Name, max(p.YearOfBirth)
from
person p
group by
p.Name
那会给我带来具有不同名称的记录,每个不同的名称将与其组内YearOfBirth的最大值配对。在给定示例中,当Name='a'时,YearOfBirth的最大值为2002。
如果max()是一个聚合函数,在给定组中返回列的最大值,那么是否有一个函数可以返回组内第一个非空值?而不是给我最大值,只要找到的第一个值不为空就可以了。 请不要问我为什么不能简单地使用min()或max()。
显然,我不能在这里使用rownum,因为这样做将限制我可以得到的组数。