将 child 行计入分层列中的 parent 行

Count child rows into parent row in hierarchical column

我在 SAS 中使用 oracle table 工作,其中包含分层代码列表列、COUNT 列和层次结构指示器列,并且需要根据 parent 节点更新 COUNT 列节点下 child 的计数。

ID   level  code  count
1    1      1     (null)
2    2      15    (null)
3    3      156   1
4    2      18    (null)
5    3      181   1
6    3      182   1
7    1      2     (null)
8    2      20    (null)
9    3      205   1
10   3      206   1

注意:

我尝试创建一个临时 SAS 数据集和 UPDATE - SET = (SELECT COUNT) WHERE 在 select 中使用 SUBSTR 函数,但无法弄清楚如何使其工作对于每个层级。

只做一个自连接。此示例使用长度 3 作为终端节点,但如果您的实际数据使用 10,则只需将 3 更改为 10。

proc sql ;
 create table want as 
 select a.id,a.level,a.code
      , (a.level=3) as Terminal_Node
      , sum(b.level=3) as Count_Terminal_Nodes
 from have a full join have b
 on a.code = substr(b.code,1,a.level)
 group by a.id,a.level,a.code
 order by 1
;
quit;