Нужно получить список последних документов на общую сумму долга каждого из долников. Есть кривой запрос:
|SELECT
| Долги.Клиент as [Клиент $Справочник.Клиенты],
| Отгрузки.Док as [Док $Документ.Расходная],
| Отгрузки.ДатаВремя as ДатаВремя,
| MAX(Долги.Дебет) as Дебет,
| SUM(Отгрузки.Сумма) as Отгрузка
|FROM (
| SELECT
| Рег.Клиент as Клиент,
| SUM(-Рег.СуммаОстаток) as Дебет
| FROM
| $РегистрОстатки.Деньги(:НачДата~,,,
| (Клиент),(Сумма)) as Рег
| GROUP BY
| Рег.Клиент
| HAVING
| SUM(Рег.СуммаОстаток) < 0
| ) as Долги
|LEFT JOIN (
| SELECT TOP 100
| $Накл.Клиент as Клиент,
| Жур.IDDoc as Док,
| Жур.Date_Time_IDDoc ДатаВремя,
| SUM($Мнч.Всего) as Сумма
| FROM
| _1SJourn as Жур
| INNER JOIN
| $Документ.Расходная as Накл ON Накл.IDDoc = Жур.IDDoc
| INNER JOIN
| $ДокументСтроки.Расходная as Мнч ON Мнч.IDDoc = Накл.IDDoc
| WHERE
| Жур.Date_Time_IDDoc <= :НольДата AND
| Жур.IDDocDef = $ВидДокумента.Расходная
| GROUP BY
| $Накл.Клиент,Жур.IDDoc,Жур.Date_Time_IDDoc
| ORDER BY
| Жур.Date_Time_IDDoc desc
|) as Отгрузки ON Отгрузки.Клиент = Долги.Клиент
|GROUP BY
| Долги.Клиент,Отгрузки.Док,Отгрузки.ДатаВремя
|ORDER BY
| Долги.Клиент,Отгрузки.ДатаВремя
1. В этом запросе нет условия по сумме - выборка по клиенту должна прекращаться при общей сумме расходных, превышающей (равной) сумме долга.
2. "SELECT TOP 100" конечно неправильно, но если TOP убрать, запрос не может отсортировать по дате_времени документы. 100 - мало, а как определить, сколько?
Помогите пожалуйста.