有下表:
姓名 数学 语文 英语
-----------------
张三 60  70  80
李四 70  80  90
王五 65  75  85
怎样写语句可以得到下表:
姓名 数学 语文 英语 个人总分
------------------------
张三 60  70  80  210
李四 70  80  90  240
王五 65  75  85  225
合计 195 225 255 675

解决方案 »

  1.   

    select 姓名, 数学, 语文 ,英语 ,个人总分=数学+ 语文+英语
    from taunion  all
    select '合计',sum(数学) ,sum(语文) ,sum(英语),sum(数学+ 语文+英语)
    from ta
      

  2.   

    SELECT,姓名,数学,语文,英语,数学+语文+英语 AS 个人总分
    FROM tb_nameUNION ALLSELECT '合计' AS 姓名,
           SUM(数学) 数学,
           SUM(语文) 语文,
           SUM(英语) 英语,
           SUM(数学+语文+英语) AS 个人总分
    FROM tb_name
      

  3.   

    declare @t table(姓名 varchar(10), 数学 int, 语文 int , 英语 int ) 
    ----------------- 
    insert @t select '张三', 60,  70,  80 
    insert @t select '李四', 70,  80,  90 
    insert @t select '王五', 65,  75,  85
    select *, 数学+语文+ 英语 个人总分 from @T
    union  all
    select '合计',sum(数学) ,sum(语文) ,sum(英语),sum(数学+ 语文+英语)
    from @t
    /*
    姓名         数学          语文          英语          个人总分        
    ---------- ----------- ----------- ----------- ----------- 
    张三         60          70          80          210
    李四         70          80          90          240
    王五         65          75          85          225
    合计         195         225         255         675(所影响的行数为 4 行)
    */
      

  4.   

    select *,数学+语文+英语 as 个人总分 from 下表
    union all
    select '合计',* from (
    select sum(数学)as 数学,sum(语文)as 语文,sum(英语) as 英语,sum(数学+语文+英语 as 个人总分 from 下表
    )T
      

  5.   

    create table t (sname varchar(10), Chinese  int, Math int , English int ) 
    ----------------- 
    insert t select 'aaa', 60,  70,  80 
    insert t select 'bbb', 70,  80,  90 
    insert t select 'ccc', 65,  75,  85
    select b.* from(
    select 
        a.sname,
        sum(a.chinese) chinese,
        sum(a.math) math,
        sum(a.english) english,
        sum(a.total) total 
      from (select *,Chinese+Math+ English as total from T ) a
      group by a.sname
        with rollup