Вопрос
Допустим, у меня есть таблица с такими строками:
id | country | place | last_action | second_to_last_action
----------------------------------------------------------
1 | US | 2 | reply |
1 | US | 2 | | comment
4 | DE | 5 | reply |
4 | | | | comment
Я хочу объединить их по идентификатору, стране и месту, чтобы last_action и second_to_last_action быть в одном ряду
id | country | place | last_action | second_to_last_action
----------------------------------------------------------
1 | US | 2 | reply | comment
4 | DE | 5 | reply | comment
Как мне подойти к этому? Думаю, здесь мне понадобится агрегат, но я не могу понять, какой из них использовать.
Можно ожидать, что всегда будет подходящая пара.
Справочная информация:
Примечание: эта таблица была получена из чего-то вроде этого:
id | country | place | action | time
----------------------------------------------------------
1 | US | 2 | reply | 16:15
1 | US | 2 | comment | 15:16
1 | US | 2 | view | 13:16
4 | DE | 5 | reply | 17:15
4 | DE | 5 | comment | 16:16
4 | DE | 5 | view | 14:12
Код, используемый для разделения, был:
row_number() over (partition by id order by time desc) as event_no
И затем я получил действия last и second_to_last получая event_no 1 и 2. Поэтому, если есть более эффективный способ получить последние два действия в двух разных столбцах, я был бы рад это услышать.