不是很清楚你的需求,最好能够通过模拟数据来描述你需要的结果 dept 表 id mc pid 1 a 2 b 3 c 4 a1 1 5 b1 2 6 c1 3 7 a11 1 8 b11 2 9 c11 3 业务数据全部是有 7、8 、 9来 tabname id dept_id 1 7 2 7 3 8 4 9 5 7 6 7 我的统计根据选择dept 表来进行计算。 加入我们同时选择 a,b,c 则统计数据为: a 4 b 1 c 1 如果我们选择 a b a 4 b 1 我现在能通过start with connect by 统计出a=4 ,b=1 ,c=1 但是我的这个统计只能单个出来,不能同时出来。
不是很清楚你的需求,最好能够通过模拟数据来描述你需要的结果 dept 表 id mc pid 1 a 2 b 3 c 4 a1 1 5 b1 2 6 c1 3 7 a11 1 8 b11 2 9 c11 3 业务数据全部是有 7、8 、 9来 tabname id dept_id 1 7 2 7 3 8 4 9 5 7 6 7 我的统计根据选择dept 表来进行计算。 加入我们同时选择 a,b,c 则统计数据为: a 4 b 1 c 1 如果我们选择 a b a 4 b 1 我现在能通过start with connect by 统计出a=4 ,b=1 ,c=1 但是我的这个统计只能单个出来,不能同时出来。 这里的选择 还有可能是 a c1等 不规则的选择
不是很清楚你的需求,最好能够通过模拟数据来描述你需要的结果 dept 表 id mc pid 1 a 2 b 3 c 4 a1 1 5 b1 2 6 c1 3 7 a11 1 8 b11 2 9 c11 3 业务数据全部是有 7、8 、 9来 tabname id dept_id 1 7 2 7 3 8 4 9 5 7 6 7 我的统计根据选择dept 表来进行计算。 加入我们同时选择 a,b,c 则统计数据为: a 4 b 1 c 1 如果我们选择 a b a 4 b 1 我现在能通过start with connect by 统计出a=4 ,b=1 ,c=1 但是我的这个统计只能单个出来,不能同时出来。 这里的选择 还有可能是 a c1等 不规则的选择with t1 as (select 1 id, 'a' mc, null pid from dual union all select 2 id, 'b' mc, null pid from dual union all select 3 id, 'c' mc, null pid from dual union all select 4 id, 'a1' mc, 1 pid from dual union all select 5 id, 'b1' mc, 2 pid from dual union all select 6 id, 'c1' mc, 3 pid from dual union all select 7 id, 'a11' mc, 1 pid from dual union all select 8 id, 'b11' mc, 2 pid from dual union all select 9 id, 'c11' mc, 3 pid from dual), t2 as (select 1 id, 7 dept_id from dual union all select 2 id, 7 dept_id from dual union all select 3 id, 8 dept_id from dual union all select 4 id, 9 dept_id from dual union all select 5 id, 7 dept_id from dual union all select 6 id, 7 dept_id from dual) select count(t2.id), root_id from t2, (select t1.*, CONNECT_BY_ROOT(mc) root_id from t1 start with mc in ('a', 'b', 'c', 'a1', 'a11') connect by pid = prior id) t3 where t2.dept_id(+) = t3.id group by root_id
dept 表
id mc pid
1 a
2 b
3 c
4 a1 1
5 b1 2
6 c1 3
7 a11 1
8 b11 2
9 c11 3
业务数据全部是有 7、8 、 9来
tabname
id dept_id
1 7
2 7
3 8
4 9
5 7
6 7
我的统计根据选择dept 表来进行计算。
加入我们同时选择 a,b,c 则统计数据为:
a 4
b 1
c 1
如果我们选择 a b
a 4
b 1
我现在能通过start with connect by 统计出a=4 ,b=1 ,c=1 但是我的这个统计只能单个出来,不能同时出来。
dept 表
id mc pid
1 a
2 b
3 c
4 a1 1
5 b1 2
6 c1 3
7 a11 1
8 b11 2
9 c11 3
业务数据全部是有 7、8 、 9来
tabname
id dept_id
1 7
2 7
3 8
4 9
5 7
6 7
我的统计根据选择dept 表来进行计算。
加入我们同时选择 a,b,c 则统计数据为:
a 4
b 1
c 1
如果我们选择 a b
a 4
b 1
我现在能通过start with connect by 统计出a=4 ,b=1 ,c=1 但是我的这个统计只能单个出来,不能同时出来。
这里的选择 还有可能是 a c1等 不规则的选择
dept 表
id mc pid
1 a
2 b
3 c
4 a1 1
5 b1 2
6 c1 3
7 a11 1
8 b11 2
9 c11 3
业务数据全部是有 7、8 、 9来
tabname
id dept_id
1 7
2 7
3 8
4 9
5 7
6 7
我的统计根据选择dept 表来进行计算。
加入我们同时选择 a,b,c 则统计数据为:
a 4
b 1
c 1
如果我们选择 a b
a 4
b 1
我现在能通过start with connect by 统计出a=4 ,b=1 ,c=1 但是我的这个统计只能单个出来,不能同时出来。
这里的选择 还有可能是 a c1等 不规则的选择with t1 as
(select 1 id, 'a' mc, null pid
from dual
union all
select 2 id, 'b' mc, null pid
from dual
union all
select 3 id, 'c' mc, null pid
from dual
union all
select 4 id, 'a1' mc, 1 pid
from dual
union all
select 5 id, 'b1' mc, 2 pid
from dual
union all
select 6 id, 'c1' mc, 3 pid
from dual
union all
select 7 id, 'a11' mc, 1 pid
from dual
union all
select 8 id, 'b11' mc, 2 pid
from dual
union all
select 9 id, 'c11' mc, 3 pid
from dual),
t2 as
(select 1 id, 7 dept_id
from dual
union all
select 2 id, 7 dept_id
from dual
union all
select 3 id, 8 dept_id
from dual
union all
select 4 id, 9 dept_id
from dual
union all
select 5 id, 7 dept_id
from dual
union all
select 6 id, 7 dept_id
from dual)
select count(t2.id), root_id
from t2,
(select t1.*, CONNECT_BY_ROOT(mc) root_id
from t1
start with mc in ('a', 'b', 'c', 'a1', 'a11')
connect by pid = prior id) t3
where t2.dept_id(+) = t3.id
group by root_id