表结构为 单号(外键)、开始日期、结束日期、预测量,
把一个单号的数据作为基准,找出其他单号中跟它开始日期和结束日期相同的,将数据综合起来,产生一个新的表,如下:
开始日期、结束日期、预测量(基准)、预测量(其他单号)
这种怎么实现?表 综合
把一个单号的数据作为基准,找出其他单号中跟它开始日期和结束日期相同的,将数据综合起来,产生一个新的表,如下:
开始日期、结束日期、预测量(基准)、预测量(其他单号)
这种怎么实现?表 综合
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);
}
}这是一个合并数量的例子。思想差不多。就是把日期相同的数据的数量合计起来。
我的博文
sql分组合并字段sql字符串行转列
select 开始日期,结束日期,
sum(case when 单号=@基准 then 预测量 else 0 end) as '预测量(基准)',
sum(case when 单号=@其他 then 预测量 else 0 end) as '预测量'
from 表名
group by 开始日期,结束日期