我用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
工序 工种 工人 产品 等级 工资系数 产量 工资
原料 装料工 王世权 酒瓶 一 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
2。如果单列 可以用WITH { CUBE | ROLLUP
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
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
我看不懂,能否讲一个各语句的含义,多谢!
--创建一个表
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 --从变量表中查询结果