我用select语句生成的一个table,如下:
工序 工种     工人   产品  等级  工资系数  产量  工资
原料  装料工  王世权  酒瓶  一     0.2      100   20
原料  装料工  王世权  酒瓶  二     0.1      100   10
原料  出料工   李三   酒瓶  一     0.3      100   30
成型  注浆     张五   酒瓶  一     0.2       75   15
如何添加小计行,如下:原料  装料工  王世权  酒瓶  一     0.2      100   20
原料  装料工  王世权  酒瓶  二     0.1      100   10
               小计                               30
      小计                                        30
原料  出料工   李三   酒瓶  一     0.3      100   30
               小计                               30
小计                                              60
成型  注浆     张五   酒瓶  一     0.2       75   15
               小计                               15
      小计                                        15
小计                                              15
合计                                              75

解决方案 »

  1.   

    1。用临时表 在 group by 各个层此的列 然后insert 到结果集里去
    2。如果单列 可以用WITH { CUBE | ROLLUP
      

  2.   

    create table tbl(gx nvarchar(30),gzh nvarchar(10),gr nvarchar(30),cp nvarchar(30),dj nvarchar(4),gzxs float,cl int,gz int)
    insert into tbl select N'原料',N'装料工',N'王世权',N'酒瓶',N'一',0.2,100,20
          union all select N'原料',N'装料工',N'王世权',N'酒瓶',N'二',0.1,100,10
          union all select N'原料',N'装料工',N'李三',  N'酒瓶',N'三',0.3,100,30
          union all select N'成型',N'注浆',  N'张五',  N'酒瓶',N'四',0.2,75, 15select * from tbl where gr=N'王世权'
    union all
    select '','',N'小计','','',Null,null,sum(gz) from tbl where gr=N'王世权'Drop table tbl
    ---------------------------------
    原料 装料工 王世权 酒瓶 一 0.20000000000000001 100 20
    原料 装料工 王世权 酒瓶 二 0.10000000000000001 100 10
    小计 NULL NULL 30
      

  3.   

    create table tbl(gx nvarchar(30),gzh nvarchar(10),gr nvarchar(30),cp nvarchar(30),dj nvarchar(4),gzxs float,cl int,gz int)
    insert into tbl select N'原料',N'装料工',N'王世权',N'酒瓶',N'一',0.2,100,20
          union all select N'原料',N'装料工',N'王世权',N'酒瓶',N'二',0.1,100,10
          union all select N'原料',N'装料工',N'李三',  N'酒瓶',N'三',0.3,100,30
          union all select N'成型',N'注浆',  N'张五',  N'酒瓶',N'四',0.2,75, 15declare @name nvarchar(20)
    declare @t table(gx nvarchar(30),gzh nvarchar(10),gr nvarchar(30),cp nvarchar(30),dj nvarchar(4),gzxs float,cl int,gz int)
    declare my_cursor cursor for
      select distinct gr from tbl
    open my_cursor
    fetch next from my_cursor into @name
    while (@@fetch_status =0 )
    begin
      insert into @t
    select * from tbl where gr=@name
    insert into @t
    select '','',N'小计','','',Null,null,sum(gz) from tbl where gr=@name
      fetch next from my_cursor into @name
    end
    close my_cursor
    deallocate my_cursor
    Drop table tblselect * from @t
      

  4.   

    to hyrongg(世道变得太快) 
    我看不懂,能否讲一个各语句的含义,多谢!
      

  5.   

    create table tbl(gx nvarchar(30),gzh nvarchar(10),gr nvarchar(30),cp nvarchar(30),dj nvarchar(4),gzxs float,cl int,gz int)
    --创建一个表
    insert into tbl select N'原料',N'装料工',N'王世权',N'酒瓶',N'一',0.2,100,20
          union all select N'原料',N'装料工',N'王世权',N'酒瓶',N'二',0.1,100,10
          union all select N'原料',N'装料工',N'李三',  N'酒瓶',N'三',0.3,100,30
          union all select N'成型',N'注浆',  N'张五',  N'酒瓶',N'四',0.2,75, 15
    --联合查询数据后插入到tbl表中
    declare @name nvarchar(20)
    --声明一个字符类型变量
    declare @t table(gx nvarchar(30),gzh nvarchar(10),gr nvarchar(30),cp nvarchar(30),dj nvarchar(4),gzxs float,cl int,gz int)
    --声明一个表变量
    declare my_cursor cursor for
      select distinct gr from tbl
    --声明一个游表
    open my_cursor
    --打开游标
    fetch next from my_cursor into @name
    --结合游标到变量中
    --循环开始(条件)
    while (@@fetch_status =0 )
    begin
      insert into @t
    select * from tbl where gr=@name
    insert into @t
    select '','',N'小计','','',Null,null,sum(gz) from tbl where gr=@name
      fetch next from my_cursor into @name
      --插入数据
    end
    close my_cursor --关闭游标
    deallocate my_cursor --释放游标
    Drop table tbl --删除表select * from @t --从变量表中查询结果