ЕСть справочник Товары иерархический, структура справочника следующая, группы самомго верхнего уровня - производители, групы следующих уровней - группы товаров, сам элемент - товар. Задача следующая нужно сгруппировать продажи по производителям, запрос построил следующий:
SELECT Выборка.Производитель as [Товар $Справочник.Товары], Выборка.Клиент as [Клиент $Справочник.Клиенты], Выборка.Период as Период, Выборка.ИтогОбщий as ИтогОбщий, Выборка.ИтогПроизводитель as ИтогПроизводитель, Выборка.Сумма as Сумма FROM ( Select Выборка1.Производитель as Производитель, Выборка1.Клиент as Клиент, Выборка1.Период as Период, GROUPING(Выборка1.Производитель) as ИтогОбщий, GROUPING(Выборка1.Клиент) as ИтогПроизводитель, SUM(Выборка1.Сумма) as Сумма FROM ( Select CASE WHEN СпрРРРРР.ID = $ПустойИД THEN CASE WHEN СпрРРРР.ID = $ПустойИД THEN CASE WHEN СпрРРР.ID = $ПустойИД THEN CASE WHEN СпрРР.ID = $ПустойИД THEN СпрР.ID ELSE СпрРР.ID END ELSE СпрРРР.ID END ELSE СпрРРРР.ID END ELSE СпрРРРРР.ID END as Производитель, Рег.Клиент as Клиент, Рег.Период, Рег.ОборотОборот as Сумма FROM $РегистрОбороты.Продажи(:Дата1,:Дата2~,День,,"+усл+",(Товар,Клиент),(Оборот)) as Рег LEFT JOIN $Справочник.Товары as СпрР ON СпрР.ID = Рег.Товар LEFT JOIN $Справочник.Товары as СпрРР ON СпрРР.ID = СпрР.ParentID LEFT JOIN $Справочник.Товары as СпрРРР ON СпрРРР.ID = СпрРР.ParentID LEFT JOIN $Справочник.Товары as СпрРРРР ON СпрРРРР.ID = СпрРРР.ParentID LEFT JOIN $Справочник.Товары as СпрРРРРР ON СпрРРРРР.ID = СпрРРРР.ParentID ) as Выборка1 GROUP BY Выборка1.Производитель , Выборка1.Клиент, Выборка1.период WITH ROLLUP ) as Выборка LEFT JOIN $Справочник.Товары as СпрПроизв ON СпрПроизв.ID = Выборка.Производитель ORDER BY СпрПроизв.Descr, Выборка.Клиент, Выборка.Период, Выборка.ИтогОбщий DESC, Выборка.ИтогПроизводитель DESC
Проблема следующая, когда иерархия групп сдержит 4 уровня групп, то все нормально, если меньше, то вместо производителя возвращяется пустая строка, хотя в операторе Case (выделенном жирным цветом) все это предусматривается, что я неправильно написал в выделенном жирным цветом блоке? Как оперделить в кейсе пустой ли родитель или нет ?
|