比如说有一张表RLB 里面有字段A、B、C
原本直接用Select查出来的数据是这样的
A B C
X 123 5400
X 456 7677
B 789 9000
B 987 9800
现在想在查询的结果最后一列加一个汇总 ,第一个字段A对应的自定义 B和C对应为当列的汇总就是这样的
A B C
X 123 5400
X 456 7677
B 789 9000
B 987 9800
自定义 2355 31877
用一条SQL语句能否实现?最好有直接SQL语句
方法有还能多种。 也可以在查询出来的DataTable中操作DataTable。之前写了个方法,如下:
/// <summary> /// 根据原始数据,新增合计行,统计出 合计数据 /// 作者:康忠鑫 /// 更新:在新增 序号列 2013-07-02 /// </summary> /// <param name="dtData"></param> /// <returns></returns> public DataTable MergeDataTableToSource(DataTable dtData) { if (dtData == null || dtData.Rows.Count == 0) { return null; } //新增合计行置底 DataRow drNew = dtData.NewRow(); drNew[0] = "合计"; for (int i = 1; i < dtData.Columns.Count; i++) { drNew[i] = dtData.Compute(string.Format("SUM({0})", dtData.Columns[i]), "true"); } dtData.Rows.Add(drNew); return dtData; }
select A,B,C from Table
union
select sum(B),sum(C) from Table
select A,B,C from RLB
union
select '自定义',sum(B),sum(C) from RLB
楼上正解。不过union最好换成union all,因为前者是要排序的,所以不能保证统计行一定在最后一行。
union all ,个人觉得是最好的方式。