VH>>     Оно ?

         Разобрался, совсем не оно :(
         сдесь берётся для having сумма
         ВСЕГО "уровня"
         ВСЕГО "куста"

         , а надо для того же having взять
         в условие суммы для каждой "группы"
         веток выбранных запросом

 Recursion as (
              select m0.type_id ti, d0.id ci, d0.quantity q, 0 lvl
                from vw_det0 d0 join vw_DOC0 m0
                   on m0.id = d0.doc_id
                  and d0.card_id = -1
                  and d0.tovar_id = :tov_id

         где каждая запись этого запроса считается "группой"
         как бы отдельным деревом, и если для одной из групп
         "дерева" сумма "листов" 3 уровня ЭТОЙ группы =
         "листу" начала "группы" то эта "группа" полностью
         исключается из дальнейшего запроса

         Sums as (
                select ti, sum(q) as tmp
                    from Recursion
                group by ti

                
        Т.е. надо по идее использовать всё-же were? и должно получится
        что-то наподобии:


with recursive
            Recursion as (
              select m0.type_id ti, d0.id ci, d0.quantity q, 0 lvl
                from vw_det0 d0 join vw_DOC0 m0
                   on m0.id = d0.doc_id
                  and d0.card_id = -1
                  and d0.tovar_id = :tov_id

              UNION ALL

              select m1.type_id ti, d1.id ci, d1.quantity q, r.lvl + 1
                from vw_det0 d1 join vw_DOC0 m1
                   on m1.id = d1.doc_id
                       join Recursion r
                   on r.ci = d1.card_id
            )

            ,

            Sums as (
                select ti, sum(q) as tmp
                    from Recursion
                where
                q > (select sum(q) from recursion where lvl = 3
                  and
!!!!!!!!!!!!!!!!!!!!!!!!!!!! а вот здесь непонятно как выбрать только
                             ветки 3-го уровня "текущей" группы

               ) group by ti
) select ti, tmp from Sums


PS: подобный вариант where допустим, как я предполагаю, при условии что
    сумма листов каждого следуещего уровня не может быть больше
    суммы длстов предыдуего уровня ...

PPS: короче сам уже путатся начинаю ... :(

С уважением,
Константин Григорьевич.
===============


Ответить