drop table #a
go
create table #a
(
A tinyint,
B char(4),
C smallint,
D tinyint
)
--插入数据
insert into #a (A,B,C,D)
values (1,'张三',100,10),
(2,'李四',200,20),
(3,'王武',300,30),
(4,'李逵',400,40)
--语句
with a as(
select cast(case grouping(A) when 0 then A else cast('合计' as sql_variant) end as char(4)) as A,cast(case grouping(A) when 0 then B else cast('合计' as sql_variant) end as char(4)) as B,sum(C) as C,sum(D) as D,row_number() over(partition by A order by A ) as rn
from #a
group by rollup(A,B)
)
select * from a where rn <>2 order by A
--结果展示
/*
A B C D rn
---- ---- ----------- ----------- --------------------
1 张三 100 10 1
2 李四 200 20 1
3 王武 300 30 1
4 李逵 400 40 1
合计 合计 1000 100 1
(5 行受影响)
*/
1,在你的输入字段里增加一个字段,2,给该字段赋值为"总计"3,将改字段隐藏,it_fieldcat-tech = 'X'.it_fieldcat-no_out = 'X'.4,设置总计字段的do_sum属性5,将该字段设置为排序字段再试试?假设你有120人如图
在c2输入 公式=ROUNDUP(ROW(A1)/12,0)+(MOD(ROW(A1)-1,12)+1)*0.01 回车,点c2,鼠标停在c2右下角变成小十字,双击,
于是最后一行就是10.12了
在a122输入“小计”,下拉复制10个,最下面输个“总计”,c22至c131输入1.13、2.13……11.13
选中a1:c132,数据,排序,主要关键字选列c和有标题行,确定,清除c列
选中b列,按F5键,定位条件,空值,确定,输入公式=IF(A14="总计",SUM(B$1:B13)/2,SUM(OFFSET(B$1,IF(COUNTIF(A$1:A14,A14)=1,1,LOOKUP(1,0/(A$1:A13=A14),ROW(A$1:A13))),,12))) 同时按ctrl+回车键结束
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)