Этот вопрос связан с моим предыдущим постом, оригинальная таблица, как показано ниже
Customer_ID Account_ID Paying_Account_ID Parent_Account_ID Company_ID
158 158 158 158 0
159 159 158 158 0
160 160 158 158 0
181 181 181 181 0
183 183 183 183 0
24669 24669 24669 24669 0
24671 24671 24671 24669 0
24670 24670 24670 24669 0
3385127 3385127 3385127 24670 0
Чтобы определить иерархические отношения данных, которые PARENT_ACCOUNT_ID
и ACCOUNT_ID
, ниже приведен запрос, который я использовал.
SELECT lpad(' ', 2*level) || A.ACCOUNT_ID AS LEVEL_LABEL,
CONNECT_BY_ISCYCLE "Cycle",
LEVEL,
A.*
FROM ACCOUNT A
START WITH parent_account_id = account_id
CONNECT BY NOCYCLE PRIOR A.ACCOUNT_ID = A.PARENT_ACCOUNT_ID AND
account_id <> parent_account_id;
Это результат запроса
Level_Label Level CustomerID AccountID Paying_AccountID Parent_AccountID CompanyID
158 1 158 158 158 158 0
159 2 159 159 158 158 0
160 2 160 160 158 158 0
181 1 181 181 181 181 0
183 1 183 183 183 183 0
24669 1 24669 24669 24669 24669 0
24671 2 24671 24671 24671 24669 0
24670 2 24670 24670 24670 24669 0
3385127 3 3385127 3385127 3385127 3385127 0
У меня вопрос, как я могу изменить запрос, чтобы вычислить значения для:
- My_Total_PR - Количество моих детских PR-аккаунтов, которые не включают себя.
- Total_PR - Общее количество PR-аккаунтов в общей структуре
- My_Total_NPR - Количество моих дочерних учетных записей NPR, которое не включает себя.
- Total_NPR - Общее количество учетных записей NPR в общей структуре
PR означает Ответственный за платеж, например, платеж, ответственный за Счет 158, составляет 158 (Paying_Account_ID
), поэтому Total_PR
для 158 составляет 3 (158, 159, 160) * 1028. *
NPR означает «Ответственный за неоплату», например, платеж, ответственный за Счет 159, равен 158 (Paying_Account_ID
), поэтому Total_NPR
для 159 равен 1.
Это ожидаемый результат, любой совет будет высоко ценится. Спасибо!
Level_Label Level Cycle My_Total_PR Total_PR My_Total_NPR Total_NPR Paying_Account
158 1 0 2 3 0 0 158
159 2 0 0 0 0 1 158
160 2 0 0 0 0 1 158
181 1 0 0 1 0 0 181
183 1 0 0 1 0 0 183
24669 1 0 0 1 3 3 24669
24671 2 0 0 1 0 0 24671
24670 2 0 0 1 1 1 24670
3385127 3 0 0 1 0 0 3385127