Спасибо, все работает.
Теперь думаю как это прикрутить к моей конкретной ситуации
Надо рассчитать долги на каждый день. После еще надо и расчитать качественность долгов, которая зависит от времени прошедшего с момента отгрузки. База кривая, регистр незакрывающийся (ужас конечно, но не я автор). От тормозов спасает то, что рассчитывается по одному контрагенту.
Получаю таблицу #Долги, вида Договор,Счет,СчетДата(Дата счета), ДатаДок(Дата дока движется, как правило расходная накладная), Товар (по сути сумма1 из примера), Деньги (сумма на которую погашен счет) то есть если например 4 числа отгрузили на 2000, а 5 погасили 1000, то будет таблица
договор1 счет1 04.10.10 04.10.10 -2000 0 договор1 счет1 04.10.10 06.10.10 0 1000
у меня в текстзапроса идет что то вроде
|(select |Контрагент = :ВыбКонтрагент, |День = ВыбДата.Dat, |Договор , |Счет , |ДатаДок = CASE WHEN (DATEDIFF ( day ,ДатаДок , ВыбДата.Dat )-$ПоследнееЗначение.Договора.СрокКредита(Договор,ВыбДата.Dat))>0 THEN DATEDIFF ( day ,ДатаДок , ВыбДата.Dat )-$ПоследнееЗначение.Договора.СрокКредита(Договор,ВыбДата.Dat ) ELSE 0 END, |Товар Товар, //|Контрагент , |Деньги Деньги |FROM (select Dat From GrDat) as ВыбДата |FULL OUTER JOIN (select | Договор , | Счет, | СчетДата, | ДатаДок, | Товар, | Деньги from #Долги) as Рег on Рег.ДатаДок <= ВыбДата.Dat"; ТекстЗапроса=ТекстЗапроса+" |) Выборка
и все нормально, но попадаются строки вида (опять же кривой регистр) договор1 несчет1 01.10.10 01.10.10 0 500
По сути это корректировка взаиморасчетов. Но она не гасит задолженности по счетам, а ложится отдельной строкой.
И получается, что мне надо, чтобы вместо (select | Договор , | Счет, | СчетДата, | ДатаДок, | Товар, | Деньги from #Долги) as была конструкция, которая бы проблемные строки (определяются по виду документа) размазывала бы по другим строкам, начиная с самых ранних я джойню сейчас таблицу вида договор1 несчет1 01.10.10 01.10.10 0 500 договор1 счет1 04.10.10 04.10.10 -2000 0 договор1 счет1 04.10.10 06.10.10 0 1000
а надо
договор1 счет1 04.10.10 04.10.10 -2000 0 договор1 счет1 04.10.10 06.10.10 0 1500 и как то надо проверять, чтобы по счету1 колонка товар не превышала колонку деньги
зы Перечитал, что тут понаписал. Надеюсь что хоть кто то поймет)))
|