Sql 如何将父组ID分配给Oracle 11g中分层表的每个记录?
基于TECH_VALUES表中存在的以下示例层次结构数据,我如何创建一个视图,例如TECH_VALUES_VW,该视图将获取相同的数据,但有一个附加列,即GROUP_ID_PARENT,该列将显示父组ID为0的组ID与子组所属的行,请参见新列数据示例:Sql 如何将父组ID分配给Oracle 11g中分层表的每个记录?,sql,view,oracle11g,hierarchy,Sql,View,Oracle11g,Hierarchy,基于TECH_VALUES表中存在的以下示例层次结构数据,我如何创建一个视图,例如TECH_VALUES_VW,该视图将获取相同的数据,但有一个附加列,即GROUP_ID_PARENT,该列将显示父组ID为0的组ID与子组所属的行,请参见新列数据示例: ID GROUP_ID LINK_ID PARENT_GROUP_ID TECH_TYPE GROUP_ID_PARENT ------- ------------- ------------ -----
ID GROUP_ID LINK_ID PARENT_GROUP_ID TECH_TYPE GROUP_ID_PARENT
------- ------------- ------------ -------------------- ---------- ---------------
1 100 LETTER_A 0 100
2 200 LETTER_B 0 200
3 300 LETTER_C 0 300
4 400 LETTER_A1 100 A 100
5 500 LETTER_A2 100 A 100
6 600 LETTER_A3 100 A 100
7 700 LETTER_AA1 400 B 100
8 800 LETTER_AAA1 700 C 100
9 900 LETTER_B2 200 B 200
10 1000 LETTER_BB5 900 B 200
12 1200 LETTER_CC1 300 C 300
13 1300 LETTER_CC2 300 C 300
14 1400 LETTER_CC3 300 A 300
15 1500 LETTER_CCC5 1400 A 300
16 1600 LETTER_CCC6 1500 C 300
17 1700 LETTER_BBB8 900 B 200
18 1800 LETTER_B 0 1800
19 1900 LETTER_B2 1800 B 1800
20 2000 LETTER_BB5 1900 B 1800
21 2100 LETTER_BBB8 1900 B 1800
因此,基于上述内容,我想采用表定义:
Table Name: TECH_VALUES:
ID,
GROUP_ID,
LINK_ID
PARENT_GROUP_ID,
TECH_TYPE
并创建一个新视图
View Name: TECH_VALUES_VW:
ID,
GROUP_ID,
LINK_ID
PARENT_GROUP_ID,
TECH_TYPE,
GROUP_ID_PARENT
基于上述TECH_值表中的样本数据
我希望创建一个新的查询来构建这个新的视图,该视图将只对每行为0的父组ID使用组ID
更新
为了让事情更清楚,我想要的是,如果我只取出TECH_VALUES表中PARENT_GROUP_ID为0的记录,即
ID GROUP_ID LINK_ID PARENT_GROUP_ID
------- ------------- ------------ --------------------
1 100 LETTER_A 0
2 200 LETTER_B 0
3 300 LETTER_C 0
18 1800 LETTER_B 0
仅使用这4条记录的组ID值,将此组ID分配给每个父链接ID的所有子记录,作为TECH\u values\u VW中的一个新列,并分配给原始链接ID(其中父链接ID为0),如上面的示例数据集所示。如果我正确理解了您的问题,那么这可能就是你想要的:
CREATE OR REPLACE VIEW tech_values_vw
AS
SELECT TV.*,
CASE WHEN LEVEL = 1 THEN group_id ELSE connect_by_root(group_id) END AS group_id_parent
FROM tech_values TV
START WITH parent_group_id = 0
CONNECT BY PRIOR group_id = parent_group_id
;
这还不清楚。当父组id为0时,我理解你想要什么,但当它是其他内容时,我不理解。Dan,请查看我对原始线程的更新-希望它更清晰。可能是重复的