元数据姓名      日期     分数
张三       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.   

    额,怎么乱了
    效果是这样的姓名        日期        分数
    张三         1         10
    null        1        20
    null        1        30
    null       小计        60
      

  2.   

    SELECT 姓名,日期,SUM(分数)分数 FROM TEST 
      GROUP BY 姓名,日期,分数
      WITH ROLLUP 
      

  3.   

    -->测试数据
    declare @tab table(姓名 varchar(4) ,日期 varchar(1),分数 float(4))
    insert into @tab 
    select '张三','1','10'union all
    select '张三','1','20'union all
    select '张三','1','30'union all
    select '李四','2','11'union all
    select '李四','2','22'union all
    select '王五','3','10'union all
    select '王五','3','10'-->开始查询
    select 姓名,日期,sum(分数)as 小计,grouping(姓名)as checkxm,grouping(日期)as checkrq  from  @tab  group by 姓名,日期,分数 with rollup-->结果集
    /*
    姓名     日期     小计  checkmc  checkrq
    李四 2 11 0 0
    李四 2 22 0 0
    李四 2 33 0 0
    李四 NULL 33 0 1
    王五 3 20 0 0
    王五 3 20 0 0
    王五 NULL 20 0 1
    张三 1 10 0 0
    张三 1 20 0 0
    张三 1 30 0 0
    张三 1 60 0 0
    张三 NULL 60 0 1
    NULL NULL 113 1 1*//*提供一种思路,把这个结果集插入到临时表,
    在根据临时表中增加的判断列checkmc和checkrq进行结果集的整理
    */
      

  4.   


    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
    */
      

  5.   

    楼主是想把重复的名字去掉吧,加个rownumber,case when干掉吧