【发布时间】:2015-12-02 16:14:26
【问题描述】:
我正在尝试编写一个分层代码,除了所有子/父帐户之外,它还将显示一个包含一个帐户的列,该帐户的 ID 来自表 TO_DELETE,此帐户(子/父)基于该帐户。 换句话说:您根据表 TO_DELETE 中的哪个帐户显示父/子帐户?
我的代码看起来:
WITH acc_to_delete( ID ) AS (
select parentaccount from account where accountid in
(select accountid from to_delete )
)
SELECT accountid id_acc
FROM account p
START WITH
EXISTS( SELECT 'X'
FROM to_delete w
WHERE p.accountid = w.accountid
)
CONNECT BY accountid = PRIOR parentaccount
union
SELECT accountid id_acc
FROM account p
START WITH
EXISTS( SELECT 'X'
FROM to_delete w
WHERE p.accountid = w.accountid
)
CONNECT BY prior accountid = parentaccount
它似乎工作正常。结果我得到了一个树帐户。至少我认为:)
CREATE TABLE to_delete
( accountid number);
CREATE TABLE account
( accountid number,
parentaccount number)
所以现在当 to_delete 表包含数据时:
3123,
3443,
5646,
7563,
3452,
2346
账户包含:
Accountid parentaccount
3123 5533
3443 3452
5646 4342
7563 1239
3452 5533
2346 1230
5533 6474
6474 1231
1231 1293
1293 null
那么输出应该是这样的:
accountid based on
3123 3123
5533 3123
6474 3123
1231 3123
1293 3123
3443 3443
3452 3443
6474 3443
1231 3443
1293 3443
5646 5646
4342 5646
7563 7563
等等.. 可以用 SQL 做吗?还是我需要使用pl sql?
【问题讨论】:
标签: sql oracle hierarchical