Ладно - бум ломать голову потом... пока использовал Rollup... итого получилось вот такое (писал вручную без конструктора в мелкософтском анализёре)
Задача была вывести вниз товар с размером а вправо склады с видами движений... т.е. получить на выходе хотяб таблицу с итогами по группировкам Товар,Размер,Склад и выч. полям Приход, Списание, Продажа, КонОстаток
SELECT
_Номенклатура as НоменклатураСсылка, Размер, _Склад as СкладСсылка, -- ссылка на номенклатуру, размер, склад
SUM(_НачОст) AS НачОст, -- начальный остаток
SUM(CASE WHEN (ВидД = 105) OR (ВидД = 52) OR (ВидД = 3737) THEN _Приход ELSE 0 END) AS КвоПрих, -- приход (если Вид док = "Приход" или "ВводОстатков" или "Перемещение")
SUM(CASE WHEN (ВидД = 443) OR (ВидД = 3737) THEN _Расход ELSE 0 END) AS КвоСпис, -- списание (если Вид док = "Списание" или "Перемещение")
SUM(CASE WHEN ВидД = 3767 THEN _Расход ELSE 0 END) AS КвоПрод, -- продажа (если Вид док = "Продажа")
SUM(_НачОст+_Приход-_Расход) AS КвоОст -- конечный остаток
FROM (SELECT --итог нач. остатки
SP565 AS _Номенклатура, SC21.DESCR As Размер, SP564 As _Склад, 0 As ВидД,
SUM(0) AS _Приход,
SUM(0) AS _Расход,
SUM(ОстаткиИтоги.SP71) AS _НачОст
FROM RG67 AS ОстаткиИтоги
INNER JOIN --получим ссылку на размеры
SC21 ON ОстаткиИтоги.SP566 = SC21.ID
INNER JOIN --получим ссылку на склады
SC297 ON ОстаткиИтоги.SP564 = SC297.ID
WHERE (ОстаткиИтоги.PERIOD = '20090301') --отбираем период
GROUP BY SP565, SC21.DESCR, SP564
UNION ALL --объединение
SELECT --итоги движения
SP565 AS _Номенклатура, SC21_1.DESCR As Размер, SP564 As _Склад, TbD.IDDOCDEF As ВидД,
SUM(Остатки.SP71 * CASE WHEN Остатки.DEBKRED = 0 THEN 1 ELSE 0 END) AS _Приход,
SUM(Остатки.SP71 * CASE WHEN Остатки.DEBKRED = 1 THEN 1 ELSE 0 END) AS _Расход,
SUM(0) AS _НачОст
FROM RA67 AS Остатки
INNER JOIN --получим ссылку на размеры
SC21 AS SC21_1 ON Остатки.SP566 = SC21_1.ID
INNER JOIN --получим ссылку на виды док-тов
_1SJOURN As TbD ON Остатки.IDDOC = TbD.IDDOC
INNER JOIN --получим ссылку на склады
SC297 As SC297_1 ON Остатки.SP564 = SC297_1.ID
WHERE (CAST(LEFT(Остатки.DATE_TIME_IDDOC, 8) AS datetime) >= '20090401') AND (CAST(LEFT(Остатки.DATE_TIME_IDDOC, 8) AS datetime)<= '20090405') --отбираем период
GROUP BY SP565, SC21_1.DESCR, TbD.IDDOCDEF, SP564
) AS TMP -- алиас виртуальной таблицы с полями Номенклатура,Размер,Склад, ВидД,_Приход,_Расход
WHERE not((_НачОст=0) and (_Приход=0) and (_Расход=0) and ((_НачОст+_Приход-_Расход)=0)) -- отсекаем нулевые значения ресурсов
GROUP BY _Номенклатура, Размер, _Склад WITH ROLLUP
ORDER BY НоменклатураСсылка, Размер, СкладСсылка
вот теперь думаю как "уложить" фильтры по складам и товарам (даты то ладно сами сгенерим)
склады ещё ладно - подгенерить код запроса с подсовыванием ИД складов не проблема но вот Товар - как группы отбирать ? (3х уровневый справочник)