合计2可以用union all子句来完成,假设没有合计2这一行,出来的结果集称为sub
那么这么写
select *(本来应该写完成字段列表的,我省了) from sub
union all select '合计2:', sum(合计1),sum(项目1),sum()...
from sub
那么这么写
select *(本来应该写完成字段列表的,我省了) from sub
union all select '合计2:', sum(合计1),sum(项目1),sum()...
from sub
from 表名
union
select 部门, 项目1+项目2+项目3 as 合计1, 项目1, 项目2, 项目3
from 表名 order by 部门
from 表名
union
select 部门, 项目1+项目2+项目3 as 合计1, 项目1, 项目2, 项目3
from 表名 order by 部门
假如表示这样的:
项目1 项目2 项目3
合计2 8(3+5) 7(4+3) 4(3+1)
部门1 3 4 3
部门2 5 3 1合计怎么算?Sum(项目1) as 项目1这样的语句不行的,因为项目1的值不确定,能用变量么?怎么用?
select sum(项目1) '项目1',SUM(项目2) '项目2',sUM(项目3) '项目3' from test
// 项目1 项目2 项目3
sqlstr:='select '合计2' as 部门, Sum(' + ColumnName1 + ') as ' + ColumnName + ',Sum(' + ColumnName2 + ') as' + ColumnName2 + ', Sum(' + ColumnName3 + ') as ' + ColumnName3 + 'from 表名 Union select 部门,' + ColumnName1 + ',' + ColumnName2 + ',' + ColumnName3 + 'from 表名 order by 部门'
//var ColumnName1,ColumnName2,ColumnName3: String;
// 项目1 项目2 项目3
sqlstr:='select ''合计2'' as 部门, Sum(' + ColumnName1 + ') as ' + ColumnName + ',Sum(' + ColumnName2 + ') as' + ColumnName2 + ', Sum(' + ColumnName3 + ') as ' + ColumnName3 + 'from 表名 Union select 部门,' + ColumnName1 + ',' + ColumnName2 + ',' + ColumnName3 + 'from 表名 order by 部门'