У меня есть следующие записи:Рекурсивного CTE ... дело с вложенными родителями/дети записывают
Моя цель состоит в том, чтобы проверить сумму детей для каждого родителя и убедитесь, что это 1 (или 100%).
В приведенном выше примере, у вас есть первый родитель:
Он имеет 2 детей:
Ребенок (теперь родитель) 12484 имеет ребенка 12486. Ребенок здесь (12486) имеет процент 0,6 (что не составляет 100%). Это НЕ ОК.
Ребенок (теперь родитель) 12485 имеет ребенка 12487. Ребенок здесь (12487) имеет процент 1 (или 100%). Хорошо.
Мне нужно суммировать проценты каждого вложенного ребенка и получить это значение, потому что оно не суммируется до 100%, тогда мне нужно отобразить сообщение. У меня с трудом возникает запрос на это. Может кто-нибудь дать мне руку?
Это то, что я пробовал, и я получаю «Утверждение завершено. Максимальная рекурсия 100 исчерпана до завершения заявки». сообщение об ошибке.
with cte
as (select cp.parent_payee_id,
cp.payee_id,
cp.payee_pct,
0 as level
from dbo.tp_contract_payee cp
where cp.participant_id = 12067
and cp.payee_id = cp.parent_payee_id
union all
select cp.parent_payee_id,
cp.payee_id,
cp.payee_pct,
c.level + 1 as level
from dbo.tp_contract_payee cp
inner join cte c
on cp.parent_payee_id = c.payee_id
where cp.participant_id = 12067
)
select *
from cte