请教高手这样的Sql 能写出吗 谢谢?
a b
101-1
101-1-1 1
101-1-2 2
102-1
102-1-1 3
102-1-2 4
102-1-3 5
.......
要结果如下
a b
101-1 3
101-1-1 1
101-1-2 2
102-1 12
102-1-1 3
102-1-2 4
102-1-3 5
就是把 101-1和102-1 的子的汇总
这样子能写吗?谢谢
------解决方案--------------------declare @t table(a varchar(20),b int)
insert into @t select rtrim( '101-1 '),null
insert into @t select rtrim( '101-1-1 '),1
insert into @t select rtrim( '101-1-2 '),2
insert into @t select rtrim( '102-1 '),null
insert into @t select rtrim( '102-1-1 '),3
insert into @t select rtrim( '102-1-2 '),4
insert into @t select rtrim( '102-1-3 '),5
select
a.a,
isnull(a.b,(select sum(b) from @t where a like a.a+ '% ')) as b
from
@t a
/*
a b
-------------------- -----------
101-1 3
101-1-1 1
101-1-2 2
102-1 12
102-1-1 3
102-1-2 4
102-1-3 5
*/
------解决方案-------------------- declare @tab table
(
a varchar(10),
b int
)
insert into @tab select '101-1 ', null
insert into @tab select '101-1-1 ', 1
insert into @tab select '101-1-2 ', 2
insert into @tab select '102-1 ', null
insert into @tab select '102-1-1 ', 3
insert into @tab select '102-1-2 ', 4
insert into @tab select '102-1-3 ', 5
select a,case when b is null then (select sum(b) from @tab where charindex(tab.a,a) > 0 and a <> tab.a) else b end as b
from @tab tab
--结果
101-1 3
101-1-1 1
101-1-2 2
102-1 12
102-1-1 3
102-1-2 4
102-1-3 5
------解决方案--------------------drop table tab
create table tab
(
a varchar(10),
b int
)
insert into tab select '101-1 ', null
insert