Я пытаюсь составить список клиентов, и какова была их история AR в прошлый раз, когда это было 0. Вот пример
Я хочу включить это
ID ClientID Total Balance
67202 122 63.01 63.01
66234 122 60.94 60.94
65738 122 278.47 0
62144 122 69.61 69.61
61662 122 13.65 13.65
61625 122 169.79 0
67618 49 47.37 47.37
62112 49 44.02 0
в это
ID ClientID Total Balance
67202 122 63.01 63.01
66234 122 60.94 60.94
67618 49 47.37 47.37
Обратите внимание, что запись 62144 и 61662 не включена, поскольку между ними и двумя верхними записями стоит 0.
Удаление таких записей, как 62144 и 61662, является моим зависанием.Если бы я просто хотел удалить 0, я мог бы просто сделать Balance <> 0
, но я бы хотел, чтобы самые верхние записи были до первых 0.
Вот запрос, который у меня есть, чтобы получить меня там, где я сейчас нахожусь
select * from [Artrxs]
where [clientid] in (
SELECT [ClientID]
FROM [Artrxs]
where [id] in (
select max([id]) --Find the newest record for each client
FROM [Artrxs]
group by clientid)
and [balance] <> 0) --only show clients who's newest record is not 0
order by [clientid], [id] desc
В худшем случае, я все равно перебираю список в коде для отчета, который я могу просто пропустить, пока не получу новый идентификатор клиента.Но мне бы очень хотелось сделать все это одним SQL-запросом.