--子节点和父节点的对应关系
WITH TMP AS
(SELECT ID
,NAME
,ISMEMO
,CONNECT_BY_ISLEAF AS ISFLAG
,CONNECT_BY_ROOT ID AS ROOT
FROM BASIC
WHERE CONNECT_BY_ISLEAF = '1'
CONNECT BY PRIOR ID = PARENT_ID)
SELECT TMP.ROOT
,SUM(CASE
WHEN TMP.ISMEMO = '1' AND TMP.ID <> TMP.ROOT THEN--memo,并且向父节点合计的时候为0
0
ELSE
R.PLAN_VAL
END)
FROM BASIC_RECORD R
JOIN TMP
ON R.BASIC_ID = TMP.ID
GROUP BY TMP.ROOT
ORDER BY TMP.ROOT
试试看可以不
解决方案 »
- 我这有一条sql语句,请高手来优化!!奖励分只是其次,主要是想看看能否有高手可以解决这个问题~
- 触发器中NEW和OLD的意思
- oracle update 更新问题
- SQL语句的转换
- 请问在Oracle里面这个update语句怎么写?
- 请教高手,sqlplus system的问题。
- 数据发导入的时候,提示错误12560?怎么回事啊???
- ORACLE8.17在WIN2003下装不上呀
- 我在用正版的oracle安装时,在98和2000下点击setup.exe, 程序启动一下,马上又自动终止
- 统计问题,高手请进!!高分
- 查询两个数值之间所有值
- oracle package内procedure调用function
select root_nm name,
sum(decode(t2.name,
root_nm,
plan_val,
decode(ismemo, '1', 0, plan_val))) plan_val
from basic_record t3,
(select t1.*, connect_by_root t1.name root_nm
from basic t1
connect by prior id = parent_id) t2
where t2.id = t3.basic_id(+)
group by root_nm;