create table [in](id int,name varchar(10) , type varchar(10) , total int)
insert into [in] values(1 , 'a' , 'aa' , 0)
insert into [in] values(2 , 'a1', 'aa' , 2)
insert into [in] values(3 , 'a2', 'aa' , 3)
insert into [in] values(4 , 'd' , 'bb' , 0)
insert into [in] values(5 , 'd1', 'bb' , 6)
insert into [in] values(6 , 'd2', 'bb' , 2)
go
select t.id , t.name , t.type , total = (case when len(rtrim(t.name))=1 then (select sum(total) from [in] where name like '%' + t.name + '%') else 0 end) from [in] t
/*
id name type total
----------- ---------- ---------- -----------
1 a aa 5
2 a1 aa 0
3 a2 aa 0
4 d bb 8
5 d1 bb 0
6 d2 bb 0
(所影响的行数为 6 行)
*/
select t.id , t.name , t.type , total = (case when len(rtrim(t.name))=1 then (select sum(total) from [in] where type = t.type) else 0 end) from [in] t
/*
id name type total
----------- ---------- ---------- -----------
1 a aa 5
2 a1 aa 0
3 a2 aa 0
4 d bb 8
5 d1 bb 0
6 d2 bb 0
(所影响的行数为 6 行)
*/
drop table [in]