求助:
有一张动态表,表数据模板如下:
序号  卡号  金额
1      001   1
2      002   4
3      002   6
4      001   2需要实现如下效果:序号  卡号  金额
1      001   1
4      001   2
       合计  3
2      002   4
3      002   6
       合计  10只要一个卡号有一笔以上的金额,就要针对该卡号进行金额合计

解决方案 »

  1.   

    DECLARE @a TABLE(id INT,ord CHAR(3),c INT)
    insert @a select 1      ,'001',   1
    union all select 2      ,'002',   4
    union all select 3      ,'002',   6
    union all select 4      ,'001',   2SELECT ISNULL(ltrim(id),'') id,CASE WHEN LEN(ord)=3 THEN ord ELSE  substring(ord,4,10) END b,c FROM 
    (
    SELECT id,ord,c FROM @a 
    UNION  ALL 
    SELECT NULL,ord+'合计',SUM(c) c FROM @a 
    GROUP BY ord
    )aa  
    ORDER by ord--result
    /*
    id           b       c           
    ------------ ------- ----------- 
    1            001     1
    4            001     2
                 合计      3
    2            002     4
    3            002     6
                 合计      10(所影响的行数为 6 行)
    */
      

  2.   

    DECLARE @a TABLE(id INT,ord CHAR(3),c INT)
    insert @a select 1      ,'001',   1
    union all select 2      ,'002',   4
    union all select 3      ,'002',   6
    union all select 4      ,'001',   2select case grouping(id) when 0 then cast(id as varchar(20)) else '合计'end id,
    ord,
    sum(c)
    from @a 
    group by id,ord with cube
    having ord is not null
    order by ord