Есть таблица: id клиента, дата начала месяца, дата середина месяца, баланс начала месяца, баланс середина месяца.
id не уникальны, те 1 клиент встречается несколько раз.
id, balance_date_start, balance_start, balance_date_mid, balance_mid
Надо написать запрос, который выдает баланс начала и середины месяца каждого уникального клиента самой свежей датой.
Писал так:
select distinct id, BALANCE_DATE_start, BALANCE_start, BALANCE_DATE_mid, BALANCE_DATE_mid from table
where BALANCE_DATE_start in (
select max (BALANCE_DATE_start) from table)
group by ID
Однако, если есть записи с одинаковой датой начала в табл выдает ошибочные записи, не являющиеся последними для клиента.
пример базы такой, даты это те даты в которых происходит чекин, но каждый клиент чекается только 2 раза в мес, те 2 записей с одними и теми же id и BALANCE_DATE_start быть не может
id BALANCE_DATE_start BALANCE_start BALANCE_DATE_mid BALANCE_DATE_mid
676 2021-10-02 255 2021-10-17 255
155 2021-10-02 222 2021-10-15 197
676 2021-09-01 211 2021-09-14 333
155 2021-11-01 159 2021-11-15 104
таблица продолжается дальше и в ней несколько миллионов значений, кусочек для примера
Каким должен быть запрос, чтобы например в этой таблице вывести только строки для каждого уникального ид последней датой ?