新手提问解决方案
新手提问
我在sql中建了一个表testsec,字段如下
Number x1 x2 x3 x4 Xipj(x1,x2,x3,x4四个数的平均值) CL(初始值为空)n2(数据的行数),我在asp.net 中输入如下代码update testsec set CL=(sum(Xipj)/n2),可是系统提示
“聚合不应出现在 UPDATE 语句的集合列表中”所以我又改成如下代码update testsec set CL=(select sum(Xipj)/n2 from testsec),可是系统又提示“选择列表中的列 'testsec.n2' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
”请问我怎样才能实现CL=(sum(Xipj)/n2)的功能啊(n2的值我是通过select count(*) from testsec 获取的)
------解决方案--------------------
楼主你根据什么去取到sum(Xipj)的值呢,应该有个Group by 之类的语句啊!
------解决方案--------------------
update testsec set CL=a.X/n2
from (select sum(Xipj) as X from testsec)a
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------
因为你用到sum()聚合,你在结果集中就必须使用group by 对没聚合的列进行分组
------解决方案--------------------
select (x1+x2+x3+x4)/4 from testsec 这个结果集出来的是一列,赋值的时候错误了,因为不能把一列赋值给另外一列,应该改为:
我在sql中建了一个表testsec,字段如下
Number x1 x2 x3 x4 Xipj(x1,x2,x3,x4四个数的平均值) CL(初始值为空)n2(数据的行数),我在asp.net 中输入如下代码update testsec set CL=(sum(Xipj)/n2),可是系统提示
“聚合不应出现在 UPDATE 语句的集合列表中”所以我又改成如下代码update testsec set CL=(select sum(Xipj)/n2 from testsec),可是系统又提示“选择列表中的列 'testsec.n2' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
”请问我怎样才能实现CL=(sum(Xipj)/n2)的功能啊(n2的值我是通过select count(*) from testsec 获取的)
------解决方案--------------------
楼主你根据什么去取到sum(Xipj)的值呢,应该有个Group by 之类的语句啊!
------解决方案--------------------
update testsec set CL=a.X/n2
from (select sum(Xipj) as X from testsec)a
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/
------解决方案--------------------
update testsec set CL=
(select sum(Xipj)/n2 from testsec group by n2)
因为你用到sum()聚合,你在结果集中就必须使用group by 对没聚合的列进行分组
------解决方案--------------------
select (x1+x2+x3+x4)/4 from testsec 这个结果集出来的是一列,赋值的时候错误了,因为不能把一列赋值给另外一列,应该改为:
update testsec set Xipj=(select Sum((x1+x2+x3+x4)/4) from testsec)