У меня есть таблица, которая выглядит следующим образом
primary_key act_date C1 C2 C3 C4 ...C50
K1 01-12-18
K1 03-12-18
K1 30-12-18
K2 16-11-18
K3 null
K4 null
K4 15-11-18
Я хочу выбрать все столбцы и строки так, чтобы выбирались только строки, соответствующие max (act_date), сгруппированные по primary_key.Если есть две записи с нулевым значением act_date и значением, выберите строку, которая не является нулевой в столбце act_date.
Окончательное значение o / p для приведенной выше таблицы должно выглядеть следующим образом
primary_key act_date C1 C2 C3 C4 ...C50
K1 30-12-18
K2 16-11-18
K3 null
K4 15-11-18
Я попробовал следующее, но меня попросили сгруппировать по другим столбцам таблицы, что опять-таки приведет к выводу нескольких строк на ключ primary_key, а это не то, что мне нужно.
select a.* from
(select a.*,
max(act_date) over() as max_act_date
from table a) a
where (a.act_date = a.max_act_date)
group by a.primary_key;
Цените любые отзывы / комментарии