Обычно запросом получают данные с итогами и потом обходом результата запроса по группировкам строят дерево.
Вы можете получать данные по уровням через найтиСтроки в таблице значений.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший