3、表如下: 
分数  班级  姓名 
60    1班  张三 
40    1班  李四 
60    1班  王五 
50    2班  刘一 
20    2班  吴涛 
43    2班  将二 
30    3班  李力 
79    3班  小煤 
80    3班  刘涛 想写一个sql语句查询结果如下: 
分数  班级  姓名  所在班级总分 
60    1班  张三  
40    1班  李四  160 
60    1班  王五  
50    2班  刘一  
20    2班  吴涛  113 
43    2班  将二  
30    3班  李力  
79    3班  小煤  189 
80    3班  刘涛  
也就是说想在查询后多一列“所在班级总分”,而且只能在每组的一条记录中显示出来,该怎么写呀?(提示:isnull()函数,left join) 
--测试数据 
create table 表(分数 int,班级 varchar(10),姓名 varchar(10)) 
insert 表 select 60,'1班','张三' 
union all select 40,'1班','李四' 
union all select 60,'1班','王五' 
union all select 50,'2班','刘一' 
union all select 20,'2班','吴涛' 
union all select 43,'2班','将二' 
union all select 30,'3班','李力' 
union all select 79,'3班','小煤' 
union all select 80,'3班','刘涛' 
go 

解决方案 »

  1.   


    select a.分数, a.班级, a.姓名, b.所在班级总分 form tb a,
    (select sum(分数), 班级 from tb group by 班级) b
    where a.班级=b.班级
      

  2.   

    select distinct 分数,班级,姓名,所在班级总分 form 表名
    你可以试一下
      

  3.   

    create table #T(分数 int,班级 varchar(10),姓名 varchar(10)) 
    insert #T select 60,'1班','张三' 
    union all select 40,'1班','李四' 
    union all select 60,'1班','王五' 
    union all select 50,'2班','刘一' 
    union all select 20,'2班','吴涛' 
    union all select 43,'2班','将二' 
    union all select 30,'3班','李力' 
    union all select 79,'3班','小煤' 
    union all select 80,'3班','刘涛' 
    go select a.*,isnull(CAST(b.总分数 as nvarchar),'') 所在班级总分 from #T a left join
    (select sum(分数) 总分数,max(姓名) 姓名,班级 from #T group by 班级) b on a.班级=b.班级 and a.姓名=b.姓名drop Table #T