Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) И снова итоги по группам! (число прочтений - 2568 )
ybill
Junior Member
**
Отсутствует


I Love ...!

Сообщений: 35
Зарегистрирован: 01. Сентября 2008
Пол: Мужской
И снова итоги по группам!
08. Июля 2009 :: 12:11
Печать  
Наверное уже пора выносить в FAQ но я нигде не нашел явного ответа на вопрос (а сам уже мозг сломал) как можно средствами SQL получить итоги по группам справочника.
Задача такая. Есть 4-х уровневый справочник. В результате выполнения некоторого запроса я имею выборку:
Элемент1, Количество1
Элемент2, Количество2
....
ЭлементN, КоличествоN

Как средствами SQL (это обязательно!) можно подсчитать итоги по группам?
  
Наверх
ICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: И снова итоги по группам!
Ответ #1 - 08. Июля 2009 :: 13:18
Печать  
ybill писал(а) 08. Июля 2009 :: 12:11:
Как средствами SQL (это обязательно!) можно подсчитать итоги по группам?

Например, так:
Код
Выбрать все
ТекстЗапроса = "
|SELECT $Обороты.Фирма [Фирма $Справочник.Фирмы]
|	, $Обороты.Товар [Товар $Справочник.ТМЦ]
|	, ($НачалоПериода.День(Обороты.DATE_TIME_IDDOC)) Период
|	, (CASE WHEN Обороты.DEBKRED = 1 THEN -$Обороты.Доход ELSE $Обороты.Доход END) _Доход
|FROM $Регистр.Обороты AS Обороты
|WHERE ($Обороты.Фирма <> $ПустойИд)
|TOTALS Sum(_Доход)
|BY ALL
|	, [Фирма $Справочник.Фирмы]
|	, [Товар $Справочник.ТМЦ] HIERARCHY
|	, Период PERIODS
|"; 


Это надстройка над MDX, а "MDX is a set of macros defined on top of SQL".  Очень довольный

А если иерархия в справочнике сбалансированная, можно обойтись и GROUP BY ... WITH ROLLUPПодмигивание
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
ybill
Junior Member
**
Отсутствует


I Love ...!

Сообщений: 35
Зарегистрирован: 01. Сентября 2008
Пол: Мужской
Re: И снова итоги по группам!
Ответ #2 - 08. Июля 2009 :: 13:32
Печать  
Это не совсем SQL конечно, иерархия здесь получается где-то внутри виртуальной таблицы. У меня к ним доступа нет.
А что значит сбалансированная иерархия? У меня справочник производства фирмы 1С и вся иерархия ее, она сбалансированная?  Подмигивание

Если делать в лоб join + rollup то не получается. Ведь одна номенклатура, лежащая на самом нижнем уровне иерархии добавляет  итоги сразу к нескольким группам - своей родительской, родителю родителя и т.д. до верха. Этого SQL-ный rollup не понимает и не умеет.
Вот как бы извернуться и подсунуть ему родителей так, чтобы понял - вот вопрос.
  
Наверх
ICQ  
IP записан
 
classic
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 330
Местоположение: г. Харьков
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: И снова итоги по группам!
Ответ #3 - 08. Июля 2009 :: 13:36
Печать  
Год назад ломал голову, изобретал... Потом решил, что группы особо и не нужны. Вынести группы в реквизиты + доп справочники в итоге получается и проще и надежнее, и гибче. С тех пор ни разу не жалел о отказе от групп в справочниках.
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: И снова итоги по группам!
Ответ #4 - 08. Июля 2009 :: 14:10
Печать  
ybill писал(а) 08. Июля 2009 :: 13:32:
А что значит сбалансированная иерархия?

Это когда все листья (элементы справочника) находятся на одном уровне. В твоём случае - на 4-ом.

ybill писал(а) 08. Июля 2009 :: 13:32:
У меня справочник производства фирмы 1С и вся иерархия ее, она сбалансированная?

хз. Тебе виднее.  Улыбка
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
MichaelM
YaBB Newbies
*
Отсутствует



Сообщений: 10
Зарегистрирован: 20. Августа 2007
Пол: Мужской
Re: И снова итоги по группам!
Ответ #5 - 08. Июля 2009 :: 14:35
Печать  
то 0

http://www.forum.mista.ru/topic.php?id=415642

пост № 45 для иерархии      
  
Наверх
 
IP записан
 
ybill
Junior Member
**
Отсутствует


I Love ...!

Сообщений: 35
Зарегистрирован: 01. Сентября 2008
Пол: Мужской
Re: И снова итоги по группам!
Ответ #6 - 08. Июля 2009 :: 14:43
Печать  
MichaelM писал(а) 08. Июля 2009 :: 14:35:
то 0

http://www.forum.mista.ru/topic.php?id=415642

пост № 45 для иерархии      


Спасибо но иерархию справочника я получаю очень хорошо и так  Улыбка
осталось научиться считать итоги по группам иерархии.
  
Наверх
ICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: И снова итоги по группам!
Ответ #7 - 08. Июля 2009 :: 14:44
Печать  
MichaelM

А разве CTE работает на уровне совместимости 8.0?  Озадачен
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
MichaelM
YaBB Newbies
*
Отсутствует



Сообщений: 10
Зарегистрирован: 20. Августа 2007
Пол: Мужской
Re: И снова итоги по группам!
Ответ #8 - 08. Июля 2009 :: 15:01
Печать  
berezdetsky

про CTE точно не помню.
  
Наверх
 
IP записан
 
ybill
Junior Member
**
Отсутствует


I Love ...!

Сообщений: 35
Зарегистрирован: 01. Сентября 2008
Пол: Мужской
Re: И снова итоги по группам!
Ответ #9 - 09. Июля 2009 :: 10:13
Печать  
Я их все-таки победил! Теперь все красиво считается и суммируется.
Вся фишка в том, чтобы сделать сбалансированную иерархию из несбалансированной.
  
Наверх
ICQ  
IP записан
 
Winter
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 21
Зарегистрирован: 24. Сентября 2007
Пол: Мужской
Re: И снова итоги по группам!
Ответ #10 - 09. Июля 2009 :: 15:04
Печать  
так поделись опытом.
  
Наверх
IP записан
 
KTo
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 4
Зарегистрирован: 17. Июля 2009
Re: И снова итоги по группам!
Ответ #11 - 17. Июля 2009 :: 08:32
Печать  
Давай поделись, думаю всем будет интересно и наконец-то появиться статья по этому вопросу)
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать