【发布时间】:2015-12-21 13:43:26
【问题描述】:
您好,我有一个使用 connect by prior 的 SQL 语句。我想通过特定的where 标准获取路径。遵循 SQL 可以正常工作,但我不想只获得与条件匹配的单行,我还想获得每个父记录(垂直向上的层次结构)。
SELECT SUBSTR(SYS_CONNECT_BY_PATH(R.CALCULATION_PLAN_CODE, '.'),4) CODE_PATH,
SUBSTR(SYS_CONNECT_BY_PATH(R.CALCULATION_PLAN_NAME, ' > '),29) NAME_PATH,
R.CALCULATION_PLAN_CODE,
R.CALCULATION_PLAN_NAME
FROM PRM.MOVABLE_CALCULATION_PLAN R
WHERE R.RELATED_YEAR = :relatedYear
AND R.CALCULATION_PLAN_PARENT_OID != 0
AND REGEXP_LIKE (R.CALCULATION_PLAN_NAME,'ROL')
AND CONNECT_BY_ISLEAF = 1
START WITH R.OID =
(SELECT R1.OID
FROM PRM.MOVABLE_CALCULATION_PLAN R1
WHERE (R1.CALCULATION_PLAN_PARENT_OID IS NULL OR R1.CALCULATION_PLAN_PARENT_OID = 0) AND R1.RELATED_YEAR=:relatedYear) CONNECT_BY_PRIOR R.OID = R.CALCULATION_PLAN_PARENT_OID;
我不想要这样的输出: 我想要这样:
150 İLK MADDE VE MALZEMELER
150.1 İLK MADDE VE MALZEMELER > KIRTASİYE MALZEMELERİ GRUBU
150.1.1 İLK MADDE VE MALZEMELER > KIRTASİYE MALZEMELERİ GRUBU > ROL <-----
150 İLK MADDE VE MALZEMELER
150.1 İLK MADDE VE MALZEMELER > KIRTASİYE MALZEMELERİ GRUBU
150.1.1 İLK MADDE VE MALZEMELER > KIRTASİYE MALZEMELERİ GRUBU > YAZI ARAÇLARI
150.1.1.1 İLK MADDE VE MALZEMELER > KIRTASİYE MALZEMELERİ GRUBU > YAZI ARAÇLARI > ROLLER KALEM <-----
如何做到这一点?
提前致谢
【问题讨论】:
-
删除
AND REGEXP_LIKE (R.CALCULATION_PLAN_NAME,'ROL')可能吗? -
@Timekiller,如果我删除它,如何按名称搜索。我想使用 like 运算符按名称搜索,然后我正在等待看到一棵或多棵像上面显示的层次树。跨度>
-
有人评论吗?
标签: sql oracle11g hierarchy connect-by