Предыдущий пост был для SQlLite.
Сильно оптимизированный пример - для Fox - может быть сложно :
ПредМесяц=НачМесяца(ДобавитьМесяц(НачДата,-1));
НачалоМесяца=НачМесяца(НачДата);
ПредДата=НачДата-1;
ТабПервичныхОстатков="
|
| SELECT
| $РегКассаНач.Фирма AS Фирма,
| $РегКассаНач.Валюта AS Валюта,
| "+?(Режим="Подробно","$ПустойИД AS ИДДок,","")+"
| $РегКассаНач.Наличность AS ДеньгиНачОст,
| 0000000000000.00 AS ДеньгиПриход,
| 0000000000000.00 AS ДеньгиРасход
| FROM
| $РегистрИтоги.Касса as РегКассаНач
|
| WHERE DTOS(РегКассаНач.period)+$РегКассаНач.Фирма+$РегКассаНач.Валюта
| LIKE (DTOS(:ПредМесяц~~)+'_________'+'_________')
|
| "+УсловиеНаОбъект("AND","$РегКассаНач.Фирма",ВыбФирмы)+"
| "+УсловиеНаОбъект("AND","$РегКассаНач.Валюта",ВыбВалюта)+"
|";
ТабПриходаДоПериода="
|
| SELECT
| $РегКассаДвижДо.Фирма ,
| $РегКассаДвижДо.Валюта ,
| "+?(Режим="Подробно","$ПустойИД ,","")+"
| $РегКассаДвижДо.Наличность * (1 - РегКассаДвижДо.debkred * 2) ,
| 0000000000000.00 ,
| 0000000000000.00
|
| FROM
| $Регистр.Касса as РегКассаДвижДо
|
| WHERE вижДо.lineno,4)+STR(РегКассаДвижДо.actno,6)
| BETWEEN DTOS(:НачалоМесяца~~)+'"+S_(8+9+4+6)+"' AND
| DTOS(:ПредДата~~)+'"+Z_(8+9+4+6)+"'
| "+УсловиеНаОбъект("AND","$РегКассаДвижДо.Фирма",ВыбФирмы)+"
| "+УсловиеНаОбъект("AND","$РегКассаДвижДо.Валюта",ВыбВалюта)+"
|";
ТабДвижений="
|
| SELECT
| $РегКассаДвижений.Фирма ,
| $РегКассаДвижений.Валюта ,
| "+?(Режим="Подробно","РегКассаДвижений.IDDoc,","")+"
| 0000000000000.00,
| (1-РегКассаДвижений.debkred)* $РегКассаДвижений.Наличность ,
| (РегКассаДвижений.debkred) * $РегКассаДвижений.Наличность
|
| FROM
| $Регистр.Касса as РегКассаДвижений
|
| WHERE КассаДвижений.lineno,4)+STR(РегКассаДвижений.actno,6)
| BETWEEN DTOS(:НачДата~~)+'"+S_(8+9+4+6)+"' AND
| DTOS(:КонДата~~)+'"+Z_(8+9+4+6)+"'
| "+УсловиеНаОбъект("AND","$РегКассаДвижений.Фирма",ВыбФирмы)+"
| "+УсловиеНаОбъект("AND","$РегКассаДвижений.Валюта",ВыбВалюта)+"
|";
ТабКасса="
| SELECT
| ТабКассаРазвернуто.Фирма AS Фирма ,
| ТабКассаРазвернуто.Валюта AS Валюта,
| "+?(Режим="Подробно","ТабКассаРазвернуто.ИДДок AS ИДДок,","")+"
| SUM(ТабКассаРазвернуто.ДеньгиНачОст) AS ДеньгиНачОст,
| SUM(ТабКассаРазвернуто.ДеньгиПриход) AS ДеньгиПриход,
| SUM(ТабКассаРазвернуто.ДеньгиРасход) AS ДеньгиРасход,
| SUM(ТабКассаРазвернуто.ДеньгиНачОст) + SUM(ТабКассаРазвернуто.ДеньгиПриход) - SUM(ТабКассаРазвернуто.ДеньгиРасход) AS ДеньгиКонОст
|
| FROM
|
|(
| "+ТабПервичныхОстатков+"
|
| UNION ALL
|
| "+ТабПриходаДоПериода+"
|
| UNION ALL
|
| "+ТабДвижений+"
|
|) AS ТабКассаРазвернуто
|
|GROUP BY аРазвернуто.ИДДок","")+"
|
|
|";
функции S_(N) строка пробелов размером N
Z_ (N) строка "z" размером N
- если индексы не интересуют - можешь просто условие на дату поставить.
Еще в учебнике был пример попроще.