Есть много способов добиться этого -
Ниже приведен один из возможных способов, использующий inner join
в подзапросе, который извлекает значение минимального баланса для каждой учетной записи, так что соединение может затем привести ксоответствующие записи из основной таблицы, поля счета и баланса которых совпадают с данными, рассчитанными подзапросом.
select t.*
from
end_of_day_balance t inner join
(
select u.account, min(u.[end of day balance]) as mb
from end_of_day_balance u
where u.[end of day balance] < 0
group by u.account
) v on
t.account = v.account and t.[end of day balance] = v.mb
В качестве альтернативы вы можете использовать коррелированный подзапрос следующим образом:
select t.*
from end_of_day_balance t
where
t.[end of day balance] =
(
select min(u.[end of day balance])
from end_of_day_balance u
where u.account = t.account and u.[end of day balance] < 0
)
Здесь подзапрос оценивается для каждой записи, и только те записи, которые содержат минимальные остатки, подтверждают предложение where
и, следовательно, возвращаются для каждой учетной записи.