110,532
社区成员
发帖
与我相关
我的任务
分享
DataTable MyDT = new DataTable();
MyDT.Columns.Add("列1");
MyDT.Columns.Add("列2");
MyDT.Columns.Add("列3");
MyDT.Columns.Add("列4");
DataRow row1 = MyDT.NewRow();
row1["列1"] = "A1";
row1["列2"] = 10;
row1["列3"] = 10;
row1["列4"] = "";
MyDT.Rows.Add(row1);
DataRow row2 = MyDT.NewRow();
row2["列1"] = "A1";
row2["列2"] = 10;
row2["列3"] = 5;
row2["列4"] = "";
MyDT.Rows.Add(row2);
DataRow row3 = MyDT.NewRow();
row3["列1"] = "A1";
row3["列2"] = 5;
row3["列3"] = 5;
row3["列4"] = "";
MyDT.Rows.Add(row3);
DataRow row4 = MyDT.NewRow();
row4["列1"] = "B1";
row4["列2"] = 10;
row4["列3"] = 20;
row4["列4"] = "";
MyDT.Rows.Add(row4);
DataRow row5 = MyDT.NewRow();
row5["列1"] = "B1";
row5["列2"] = 5;
row5["列3"] = 5;
row5["列4"] = "";
MyDT.Rows.Add(row5);
Hashtable HT = new Hashtable();
for (int i = 0; i < MyDT.Rows.Count; i++)
{
if (HT.ContainsKey(MyDT.Rows[i][0].ToString()))
{
HT[MyDT.Rows[i][0].ToString()] = Convert.ToInt32(HT[MyDT.Rows[i][0].ToString()])+Convert.ToInt32(MyDT.Rows[i][2]) - Convert.ToInt32(MyDT.Rows[i][1]);
}
else
{
HT.Add(MyDT.Rows[i][0].ToString(), Convert.ToInt32(MyDT.Rows[i][2]) - Convert.ToInt32(MyDT.Rows[i][1]));
}
}
for (int i = 0; i < MyDT.Rows.Count; i++)
{
MyDT.Rows[i][3] = HT[MyDT.Rows[i][0].ToString()];
}
dataGridView1.DataSource = MyDT;
5 行受影响)
L1 L2 L3
-------------------------------------------------- ----------- -----------
A1 10 10
A1 10 5
A1 5 5
B1 10 20
B1 5 5
(5 行受影响)
L1 L2 L3 L4
-------------------------------------------------- ----------- ----------- -----------
A1 10 10 -5
A1 10 5 -5
A1 5 5 -5
B1 10 20 10
B1 5 5 10
(5 行受影响)
declare @test table(L1 varchar(50),L2 int,L3 int)
insert into @test
select 'A1',10,10 union all
select 'A1',10,5 union all
select 'A1',5,5 union all
select 'B1',10,20 union all
select 'B1',5,5
select a.*,b.L4 from @test a join
(select L1,sum(L3)-Sum(L2) as L4 from @test group by L1) b on a.L1=b.L1