子查询返回的值不止一个.当子查询跟随在 =,!=,<,<=,>,>= 之后,或子查询用作
UPDATEJSKLIBSETJSKLIB.LIB980=(selectsum(JSKLIB.LIB008)fromJSKLIB,JSKLIAWHEREJSKLIB.LI...
UPDATE JSKLIB SET JSKLIB.LIB980=(select sum(JSKLIB.LIB008) from JSKLIB,JSKLIA WHERE JSKLIB.LIB001=JSKLIA.LIA001
group by JSKLIB.LIB003,substring(JSKLIA.LIA003,1,6))
这是我写的一个UPDATE更新语句,要求是更新字段JSKLIB.LIB980的值,条件是取JSKLIB.LIB008当月的和。但在执行语句时,提示“消息 512,级别 16,状态 1,第 2 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。”
请高手帮忙解答下,不甚感激! 展开
group by JSKLIB.LIB003,substring(JSKLIA.LIA003,1,6))
这是我写的一个UPDATE更新语句,要求是更新字段JSKLIB.LIB980的值,条件是取JSKLIB.LIB008当月的和。但在执行语句时,提示“消息 512,级别 16,状态 1,第 2 行
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
语句已终止。”
请高手帮忙解答下,不甚感激! 展开
展开全部
addnumber>后面这个子查询,必须是一个值,如果是多个值的话,就会报这个错误。
既然要大于一个值,那么可以大于一个最大值,用max函数,或者联合写成相关子查询,外部表与内部表字段关联。
返回值可指定
函数的返回值类型是在定义函数时指定的。return 语句中表达式的类型应与定义函数时指定的返回值类型一致。如果不一致,则以函数定义时的返回值类型为准,对 return 语句中表达式的类型自动进行转换,然后再将它返回给主调函数使用。
在调用函数时,如果需要从被调函数返回一个值供主调函数使用,那么返回值类型必须定义成非 void 型。此时被调函数中必须包含 return 语句,而且 return 后面必须要有返回值,否则就是语法错误。
展开全部
执行一下子查询select sum(JSKLIB.LIB008) from JSKLIB,JSKLIA WHERE JSKLIB.LIB001=JSKLIA.LIA001
group by JSKLIB.LIB003,substring(JSKLIA.LIA003,1,6) 看是否返回多于一行?
group by JSKLIB.LIB003,substring(JSKLIA.LIA003,1,6) 看是否返回多于一行?
追问
是的,有多行记录,因为我是按品号求当月的和,然后回写到JSKLIB.LIB980字段的。也就是不同的品号各自按月求和。
追答
只有当子查询返回一行的时候,才会不报错.看看是否少了where条件?
建议子查询JSKLIB换一个别名以免和UPDATE语句的JSKLIB混淆
select sum(b.LIB008) from JSKLIB b,JSKLIA WHERE b.LIB001=JSKLIA.LIA001
and b.品号=JSKLIB.品号 --请自行修改此句
group by b.LIB003,substring(JSKLIA.LIA003,1,6)
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询