如下数据:
A  2
B  4
C  6
D  1
A  5
B  7
C  8
... 
知道总行数,怎么样相同项的求和留一项,不相同的继续保留??

解决方案 »

  1.   

    SQL里吗??
    select a,sum(b) b from table group by a
      

  2.   

    循环判断一下。
    sql 简单加个关键字dis..
      

  3.   

    不是SQL,是程序里。
    你可以假设是数组或者集合、
      

  4.   

    你这些数据是放在哪里的??
    List??ArrayList??还是DataTable??
      

  5.   

    在一个datatable里,
    不知道怎么如何计算
      

  6.   

    先排序,再循环判断,如下一item等于当前Item删除
      

  7.   

    在dataable里,那列是中文的,
    那要怎么排呢?
      

  8.   

    先把data table view还原成数据库的表
    然后用select a,sum(b) b from table group by a,直接就可以计算了,
    再把结果表用data table view显示出来。
      

  9.   

    其实在数据库里处理后再取出来就最好了,非常方便,,方法如我一楼所说。。
    程序里可以这样,你看看:            DataTable dt = new DataTable();
                dt.Columns.Add(new DataColumn("Name", typeof(string)));
                dt.Columns.Add(new DataColumn("Count", typeof(int)));
                DataRow dr = dt.NewRow();
                dr["Name"] = "北京";
                dr["Count"] = 3;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Name"] = "上海";
                dr["Count"] = 18;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Name"] = "广州";
                dr["Count"] = 31;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Name"] = "北京";
                dr["Count"] = 13;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Name"] = "广州";
                dr["Count"] = 28;
                dt.Rows.Add(dr);            DataSet ds = new DataSet();
                ds.Tables.Add(dt);
                DataView dv = new DataView(ds.Tables[0]);
                dv.Sort = "Name asc";   //按姓名排序
                dt = dv.ToTable();    //转化为排序后的DataTable
                string a = dt.Rows[0]["Name"].ToString();   //第一行的名称
                int j = 0;   //记录行号
                int total = 0;   //记录总数
                for (int i = 0; i <dt.Rows.Count;i++)
                {
                    if (dt.Rows[i]["Name"].ToString() == a)   //相同则累加
                    {
                        total += Convert.ToInt32(dt.Rows[i]["Count"].ToString());
                        dt.Rows[j]["Count"] = total.ToString();
                        if (i != j)
                        {
                            dt.Rows.Remove(dt.Rows[i]);  //删除多余项目
                            i--;    //删除后退一行
                        }
                    }
                    else
                    {
                        a = dt.Rows[i]["Name"].ToString();    //重新定义名称
                        j = i;                                //重新定义行号
                        total = Convert.ToInt32(dt.Rows[i]["Count"].ToString());   //重新设定total值
                    }
                }
            }
      

  10.   

    lamada表达式+Dictionary
    超简单