Oracleに標準の組織階層テーブルがあるとします。簡単にするために、Orgテーブルに、その組織に直接割り当てられている従業員の数を示す列があるとします。Oracleを使用して、各レベルの従業員のロールアップ数を取得できますか?
create table org (
org_id NUMBER(5),
parent_org_id NUMBER(5),
emp_count NUMBER (5)
);
insert into org values (1, NULL, 200);
insert into org values (2, 1, 50);
insert into org values (3, 1, 100);
insert into org values (4, 2, 100);
は次のようになり、結果セットを取得することが可能です:
OrgID, Count
1, 450
2, 150
3, 100
4, 100
であるあなたは下のOrgID1の全員を追加したときに、そこDIRECTLY OrgId1に割り当てられた450人ではないですが、 350人が直接的または間接的に割り当てられています。 OrgId2では、直接割り当てられた50個+その下に割り当てられた100個(Org 4)があります。
簡単なアイデア?この種の問合せはOracleで可能ですか?
これは確かにOracleで可能です。モデレータの[dba.se](http://dba.stackexchange.com/)への移行のために自己フラグを立て、そこにアカウントを作成する準備はできますか?私はこれ以上十分に進歩しており、すぐに答えが出ると思う。 –
ヒント: 'org_idとしてのconnect_by_root(org_id)の選択、orgからのemp_countの接続by parent_org_id =(以前のorg_id)' –
@JackDouglas、完璧です。答えとして追加してください:) – aquinas