Хотелось бы чтобы SQL запрос посчитал итоги по группам справочника. Ничего стоящего я пока не нашел. Предлагаю высказывать свой мысли в этом топе.
Вот моя идея:
SELECT
SUM(Данные.ОстатокТовараПриход) as ОстатокТовараПриход,
Данные.ТоварУровень5 as ТоварУровень5,
Данные.ТоварУровень4 as ТоварУровень4,
Данные.ТоварУровень3 as ТоварУровень3,
Данные.ТоварУровень2 as ТоварУровень2,
Данные.ТоварУровень1 as ТоварУровень1,
Данные.Товар as Товар,
6 - GROUPING(Данные.ТоварУровень5) - GROUPING(Данные.ТоварУровень4) - GROUPING(Данные.ТоварУровень3) - GROUPING(Данные.ТоварУровень2) - GROUPING(Данные.ТоварУровень1) - GROUPING(Данные.Товар) as УровеньИтогов
FROM (
SELECT
CASE DEBKRED WHEN 0 THEN RA.SP16023 ELSE 0 END as ОстатокТовараПриход,
СпрНоменклатураУровень4.PARENTID as ТоварУровень5,
СпрНоменклатураУровень3.PARENTID as ТоварУровень4,
СпрНоменклатураУровень2.PARENTID as ТоварУровень3,
СпрНоменклатураУровень1.PARENTID as ТоварУровень2,
СпрНоменклатура.PARENTID as ТоварУровень1,
RA.SP16021 as Товар
FROM
RA16019 as RA(NOLOCK)
LEFT JOIN
_1SJOURN as J(NOLOCK) ON RA.IDDOC = J.IDDOC
LEFT JOIN
sc156 as СпрНоменклатура ON СпрНоменклатура.ID = RA.SP16021
LEFT JOIN
sc156 as СпрНоменклатураУровень1 ON СпрНоменклатураУровень1.ID = СпрНоменклатура.PARENTID
LEFT JOIN
sc156 as СпрНоменклатураУровень2 ON СпрНоменклатураУровень2.ID = СпрНоменклатураУровень1.PARENTID
LEFT JOIN
sc156 as СпрНоменклатураУровень3 ON СпрНоменклатураУровень3.ID = СпрНоменклатураУровень2.PARENTID
LEFT JOIN
sc156 as СпрНоменклатураУровень4 ON СпрНоменклатураУровень4.ID = СпрНоменклатураУровень3.PARENTID
LEFT JOIN
sc156 as СпрНоменклатураУровень5 ON СпрНоменклатураУровень5.ID = СпрНоменклатураУровень4.PARENTID
WHERE
J.DATE_TIME_IDDOC >= '20060101 0 0 ' AND
J.DATE_TIME_IDDOC < '20060201 0 0 '
) as Данные
GROUP BY
Данные.ТоварУровень5,
Данные.ТоварУровень4,
Данные.ТоварУровень3,
Данные.ТоварУровень2,
Данные.ТоварУровень1,
Данные.Товар
WITH ROLLUP
ORDER BY
Данные.ТоварУровень5,
Данные.ТоварУровень4,
Данные.ТоварУровень3,
Данные.ТоварУровень2,
Данные.ТоварУровень1,
Данные.Товар,
УровеньИтогов
Внутренний запрос получает данные из регистра, внешний группирует с подсчетом итогов по группам.