首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请问复杂sql语句

2012-02-27 
请教复杂sql语句adjslje101-1101-1-1110101-1-2210101-1-1110102-1102-1-1310102-1-2410102-1-3510.......

请教复杂sql语句
a                                 dj           sl           je

101-1                        
101-1-1                     1             1             0
101-1-2                     2             1             0
101-1-1                     1             1             0

102-1                        
102-1-1                     3             1             0      
102-1-2                     4             1             0
102-1-3                     5             1             0
.......

要结果如下
a                                         sl           je

101-1                        
101-1-1                             2             2
101-1-2                             1             2

102-1                        
102-1-1                             1             3      
102-1-2                             1             4
102-1-3                             1             5
.......

要求也就是:(1)把   101-1和102-1   的子的汇总
(2)把重复的   sl   加和   je   加和
这样子能写吗?非常感谢

[解决办法]

if object_id( 'pubs..tb ') is not null
drop table tb
go

create table tb
(
a varchar(20),
dj int,
sl int,
je int
)

insert into tb(a,dj,sl,je) values( '101-1 ', null,null,null)
insert into tb(a,dj,sl,je) values( '101-1-1 ',1, 1, 0)
insert into tb(a,dj,sl,je) values( '101-1-2 ',2, 1, 0)
insert into tb(a,dj,sl,je) values( '101-1-1 ',1, 1, 0)
insert into tb(a,dj,sl,je) values( '102-1 ', null,null,null)
insert into tb(a,dj,sl,je) values( '102-1-1 ',3, 1, 0)
insert into tb(a,dj,sl,je) values( '102-1-2 ',4, 1, 0)
insert into tb(a,dj,sl,je) values( '102-1-3 ',5, 1, 0)



select a,max(sl) as sl , max(je) as je from
(
select left(a,5) as a , sum(sl) as sl , sum(dj) as je from tb group by left(a,5)
union all
select left(a,7) as a , sum(sl) as sl , sum(dj) as je from tb group by left(a,7)
) t
group by a

drop table tb

/*
a sl je
-------------- ----------- -----------
101-1 3 4
101-1-1 2 2
101-1-2 1 2
102-1 3 12
102-1-1 1 3
102-1-2 1 4
102-1-3 1 5

(所影响的行数为 7 行)
*/

热点排行
Bad Request.