合计2可以用union all子句来完成,假设没有合计2这一行,出来的结果集称为sub
那么这么写
select *(本来应该写完成字段列表的,我省了) from sub
union all select '合计2:', sum(合计1),sum(项目1),sum()...
from sub

解决方案 »

  1.   

    select '合计2' as 部门, Sum(项目1)+Sum(项目2)+Sum(项目3) as 合计1, Sum(项目1) as 项目1, Sum(项目2) as 项目2, Sum(项目3) as 项目3
    from 表名
    union
    select 部门, 项目1+项目2+项目3 as 合计1, 项目1, 项目2, 项目3
    from 表名 order by 部门
      

  2.   

    select '合计2' as 部门, Sum(项目1)+Sum(项目2)+Sum(项目3) as 合计1, Sum(项目1) as 项目1, Sum(项目2) as 项目2, Sum(项目3) as 项目3
    from 表名
    union
    select 部门, 项目1+项目2+项目3 as 合计1, 项目1, 项目2, 项目3
    from 表名 order by 部门
      

  3.   

    我的这个数据库表中的所有字段都是根据外部条件动态生成的(包括行和列),sql语句中可以用变量么?
    假如表示这样的:
             项目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的值不确定,能用变量么?怎么用?
      

  4.   

    select 项目1,项目2,项目3 from test union
    select sum(项目1) '项目1',SUM(项目2) '项目2',sUM(项目3) '项目3' from test
      

  5.   

    //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 部门'
      

  6.   

    上面的'合计2'少了俩个引号      :)
    //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 部门'