以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- UPDATE 求和 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=184219) |
-- 作者:nuoyan89 -- 发布时间:2022/11/28 23:24:00 -- UPDATE 求和 老师,我点击执行时,提示b.月 和 b.使用类型 异常,请帮忙看看,谢谢 Dim cmd As New SQLCommand cmd.C cmd.CommandText = "UPDATE a S et a.制造费用_基础设施费 = b.单价成本 * a.循环时间 From (Se lect Sum(单价成本) As 制造费用_基础设施费 From 油料成本明细) as b ,工序跟踪表 as a Where a.月份 = b.月 And b.使用类型 = \'按汇总算\' " cmd.ExecuteNonQuery() |
-- 作者:有点蓝 -- 发布时间:2022/11/29 8:27:00 -- cmd.CommandText = "UPDATE a Set a.制造费用_基础设施费 = b.单价成本 * a.循环时间 From (Select 月,,Sum(单价成本) As 制造费用_基础设施费 From 油料成本明细 where 使用类型 = \'按汇总算\' group by 月) as b ,工序跟踪表 as a Where a.月份 = b.月 " |
-- 作者:nuoyan89 -- 发布时间:2022/11/29 20:59:00 -- 老师,以下代码是因为分别写的没有合并而导致执行时间稍微长点吗?谢谢 Dim cmd As New SQLCommand cmd.C cmd.CommandText = "UPDATE a s et a.制造费用_水费 = b.费用基数 * a.循环时间 from 工序跟踪表 as a ,生产成本总表 as b where a.月份 = b.月份 and b.费用明细 = \'水费\' and b.项目 = \'制造费用\'" cmd.ExecuteNonQuery() Dim cmd1 As New SQLCommand cmd1.C cmd1.CommandText = "UPDATE a1 s et a1.制造费用_电费 = b1.费用基数 * a1.循环时间 from 工序跟踪表 as a1 ,生产成本总表 as b1 where a1.月份 = b1.月份 and b1.费用明细 = \'电费\' and b1.项目 = \'制造费用\'" cmd1.ExecuteNonQuery() Dim cmd2 As New SQLCommand cmd2.C cmd2.CommandText = "UPDATE a2 s et a2.制造费用_外协费用 = b2.费用基数 * a2.循环时间 from 工序跟踪表 as a2 ,生产成本总表 as b2 where a2.月份 = b2.月份 and b2.费用明细 = \'外协费用\' and b2.项目 = \'制造费用\'" cmd2.ExecuteNonQuery() Dim cmd3 As New SQLCommand cmd3.C cmd3.CommandText = "UPDATE a3 s et a3.制造费用_运输费 = b3.费用基数 * a3.循环时间 from 工序跟踪表 as a3 ,生产成本总表 as b3 where a3.月份 = b3.月份 and b3.费用明细 = \'运输费\' and b3.项目 = \'制造费用\'" cmd3.ExecuteNonQuery() |
-- 作者:有点蓝 -- 发布时间:2022/11/29 21:06:00 -- 执行一条要1秒,4条当然就要4秒了 |
-- 作者:nuoyan89 -- 发布时间:2022/11/29 21:12:00 -- 老师,3楼的还可以怎么优化呢?谢谢 |
-- 作者:有点蓝 -- 发布时间:2022/11/29 21:42:00 -- 没有什么可优化的了。 可以考虑到数据库给表加上必要的索引,比如经常用作查询条件的列:月份、费用明细等加上索引 |