元数据姓名      日期     分数
张三       1        10
张三       1        20
张三       1        30
李四       2        11
李四       2        22
王五       3        10
王五       3        10
效果
姓名      日期      分数
张三       1         10
           1         20
           1         30
          小计       60
李四       2         11
           2         22
          小计       33
王五       3         10
           3         10
           小计      20

解决方案 »

  1.   

    使用:
    select 姓名,日期,sum(分数)
    from t
    group by 姓名,日期可以得到各个人在不同日期的分数合计值,接下来就看你怎么用了。
    你给出的值,SQL是不能给出完全相同的统计值的。只能给出于类似。
      

  2.   


    declare @test table(姓名 nvarchar(4) ,日期 varchar(10),分数 float(4))
    insert into @test 
    select N'张三','1','10'union all
    select N'张三','1','20'union all
    select N'张三','1','30'union all
    select N'李四','2','11'union all
    select N'李四','2','22'union all
    select N'王五','3','10'union all
    select N'王五','3','10'
    select 姓名,日期,分数 from 
    (
    select 姓名,日期,分数,姓名+日期 as sort from @test
    union all
    select '','小计',sum(分数),姓名+日期+'1' from @test group by 姓名,日期
    )t
    order by sort
    /*
    姓名   日期         分数
    ---- ---------- ----------------------
    李四   2          11
    李四   2          22
         小计         33
    王五   3          10
    王五   3          10
         小计         20
    张三   1          10
    张三   1          20
    张三   1          30
         小计         60
    */