请教个问题,我想针对查询出的结果,求个标准差(GMP出成 - 实际出成),但奇怪的是,目前查询结果只计算前几行的标准差值,而后面查询结果就不计算了,我的代码及截图如下,请大家帮我分析一下原因,怎么解决吧,谢谢;

sqlstring = @"SELECT t6.date as date,t6.batchNo as batchNo,t6.proName as proName,t6.spec as spec ,t10.unit as unit,t6.standardbox as standardbox,t6.ActRate as ActRate,t6.GmpRate as GmpRate ,t11.rewardprice as rewardprice
FROM w_proratexksYX t6 inner join w_productpriceUP t10 on t6.proName = t10.proName inner join w_proyirate t11 on t6.proName = t11.proName and t6.spec = t11.spec
UNION
SELECT t5.date as date,t5.batchNo as batchNo,t5.proName as proName,t5.spec as spec,t10.unit as unit,t5.standardbox as standardbox,t5.ActRate as ActRate,t5.GmpRate as GmpRate ,t11.rewardprice as rewardprice
FROM w_drugparticle t5 inner join w_productpriceUP t10 on t5.proName = t10.proName inner join w_proyirate t11 on t5.proName = t11.proName and t5.spec = t11.spec
WHERE date BETWEEN '2023-12-01' AND '2023-12-30'";
SqlCommand cmd = new SqlCommand(sqlstring, conn);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
dt.Rows.Clear();
dt.Columns.Clear();
sda.Fill(dt);
dt.Columns.Add("标准差", typeof(decimal));
dt.Columns.Add("金额", typeof(decimal));
dt.Columns.Add("奖惩金额", typeof(decimal));
dataGridView1.DataSource = dt;
foreach (DataRow row in dt.Rows)
{
//以下,标准差 = GMP出成 - 实际出成;
decimal a;
decimal actrate = Convert.ToDecimal(row["ActRate"]);
decimal gmprate = Convert.ToDecimal(row["GmpRate"]);
a = gmprate - actrate;
row["标准差"] = a.ToString();
。。。。。
}