Я использую 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, как некоторые могут предположить, потому что это ограничит количество групп, которые я могу получить.