Access里使用SQL时遇到“必须使用一个可更新的查询?”
语句如下:UPDATE表1SET调整后=金额+金额*32/(SELECTSum(金额)AS求和FROM表1);目的是将“金额”这个字段进行调整,调整数为32,调整的方式是...
语句如下:
UPDATE 表1 SET 调整后 = 金额+金额*32/(SELECT Sum(金额) AS 求和
FROM 表1);
目的是将“金额”这个字段进行调整,调整数为32,调整的方式是,将金额的每个数字(记录)除以该列的金额合计,再乘以调整数。即把调整数按照金额比重分配给原有的金额,然后作为新的一列显示。
求大牛!!
重赏100+大洋!!答案正确还有追加! 展开
UPDATE 表1 SET 调整后 = 金额+金额*32/(SELECT Sum(金额) AS 求和
FROM 表1);
目的是将“金额”这个字段进行调整,调整数为32,调整的方式是,将金额的每个数字(记录)除以该列的金额合计,再乘以调整数。即把调整数按照金额比重分配给原有的金额,然后作为新的一列显示。
求大牛!!
重赏100+大洋!!答案正确还有追加! 展开
3个回答
展开全部
想法很好,可惜ACCESS数据库Jet引擎比较弱,它支持用实际存在的字段来更新某个字段值,但是不支持用计算出来的字段来更新数据表。楼主的更新语句报错就是因此而产生的。
如果不做实际更新,运行选择查询将会很方便,例如下列语句
select a.* ,a.金额 + 32*a.金额/b.hj as 调整后 from 表1,
(select sum(金额) as hj from 表1)b;
或者运行生成表查询,生成一个含[调整后]字段的新表也很方便
select a.* ,a.金额 + 32*a.金额/b.hj as 调整后 into 新表1
from 表1,(select sum(金额) as hj from 表1)b;
如果一定要更新表1,那就比较麻烦了,要分三步不走
1)为表1添加一个货币型字段[调整后]
alter table 表1 add column 调整后 money;
2)算出总金额保存到到一个新中间过渡表[hjb] ,实在没辙啊!
select sum(金额) as hj into hjb from 表1;
3)用hjb的hj字段取更新表1的[调整后]字段
update 表1 a,hjb b set a.[调整后]=a.金额 + 32*a.金额/b.hj;
没办法,受ACCESS的局限,更新的话只能这么麻烦了
注意,因为要用总金额做除数,表一最少得有一笔金额数,否则会发生除以0的错误。
展开全部
你这种写法在ACCESS里面是有问题的,在SQL就不会有问题,主要是ACCESS 不支持标准SQL的这种写法,并且很多在SQL里面的复杂语句,access都不支持,包含一些函数也是,你需要把SELECT Sum(金额) AS 求和 FROM 表1这个值弄出来,然后再进行更新
追问
但是百度和教程里都说access里面可以嵌套的,不会有错吧
追答
是可以嵌套,但是你发现大多数嵌套功能是很差的,在SQL上可以执行,但是放到ACCESS则无法执行了!如果你想这样做的话,可以在ACCESS写一个存储过程,把上面的一条语句分成2个步骤来执行!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把求和直接写成固定值呢?
追问
改成固定值是没问题的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询