表结构为  单号(外键)、开始日期、结束日期、预测量,
把一个单号的数据作为基准,找出其他单号中跟它开始日期和结束日期相同的,将数据综合起来,产生一个新的表,如下:
开始日期、结束日期、预测量(基准)、预测量(其他单号)
这种怎么实现?表 综合

解决方案 »

  1.   

                    // 返回的datatable
                    DataTable dtTableNeeds = dsMN.Tables[0].Clone();
                    // 原datatable
                    DataTable dtTable = dsMN.Tables[0];                for (int i = 0; i < dsMN.Tables[0].Rows.Count; i++)
                    {
                        decimal count = 0;
                        // 根据主键去查找
                        string sql = "CHD_PRDCT_CD='" + dsMN.Tables[0].Rows[i]["CHD_PRDCT_CD"].ToString() + "' and START_DATE='" +
                                dsMN.Tables[0].Rows[i]["START_DATE"].ToString() + "'";                    // 找不到的时候
                        if (dtTableNeeds.Select(sql).Length == 0)
                        {
                            // 原datatable中查找
                            DataRow[] rows = dtTable.Select(sql);                        // 取到第一行的数量
                            count = Convert.ToDecimal(rows[0]["ROHJZCLNUM"].ToString());                        // 查找到多行数据
                            for (int j = 1; j < rows.Length; j++)
                            {
                                // 累加数量
                                count = count + Convert.ToDecimal(rows[j]["ROHJZCLNUM"].ToString());
                            }                        // 累加后的数量赋值给第一行数据
                            rows[0]["ROHJZCLNUM"] = count;                        // 将第一行数据添加到返回的额datatable
                            dtTableNeeds.Rows.Add(rows[0].ItemArray);
                        }
                    }这是一个合并数量的例子。思想差不多。就是把日期相同的数据的数量合计起来。
      

  2.   

    同学 你的问题跟我篇博客很相似 属于分组合并字段 根据开始日期结束日期分组 在吧字符串行转列
    我的博文
    sql分组合并字段sql字符串行转列
      

  3.   

    找到另外一种方法解决了。
    select 开始日期,结束日期,
    sum(case when 单号=@基准 then 预测量 else 0 end) as '预测量(基准)',
    sum(case when 单号=@其他 then 预测量 else 0 end) as '预测量'
    from 表名
    group by 开始日期,结束日期