单行子查询返回多个行,这个sql错在哪呀?

如题所述

这个错误很明显啊。查找重复值,然后加个逻辑处理下。
去修改你的过滤条件直到有一条结果为止。
这肯定是子查询的逻辑问题。返回多个值,系统怎么知道你要把哪个用来更新。
检查子查询,看子查询返回的结果是不是你期望的。如果有多余的说明WHERE条件还不够。如果多个数据行都是你的期望值,那说明你的设计有问题。追问

显示每年的月信息,表里有id,年份,月份(1-4月),月信息,按年分组啊,没问题啊。

追答

还要用sum聚合函数的啊

追问

???,前辈能否帮我写出一个来,让我参考呢?

追答

你源代码条件比较多 我这里测试没效果的 你借本sql的书看一下就知道了,重点看聚合函数就明白了!

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-02

换个写法吧

select year,
sum(case when month='1' then amount else 0 end) m1,
sum(case when month='2' then amount else 0 end) m2,
sum(case when month='3' then amount else 0 end) m3,
sum(case when month='4' then amount else 0 end) m4
from salary
group by year

第2个回答  2013-10-02
你用了GROUP BY 分组,非分组域需要用聚合。

单行子查询返回多个行,这个sql错在哪呀?
这个错误很明显啊。查找重复值,然后加个逻辑处理下。去修改你的过滤条件直到有一条结果为止。这肯定是子查询的逻辑问题。返回多个值,系统怎么知道你要把哪个用来更新。检查子查询,看子查询返回的结果是不是你期望的。如果有多余的说明WHERE条件还不够。如果多个数据行都是你的期望值,那说明你的设计有...

图中的sql语句报错了单行子查询反回多个行,请问哪位大神知道哪里...
这里的错误就在then和else后面的查询语句没有添加条件,会返回多条查询结果。对于case when ... then ... else的判断查询,当不满足条件或满足条件后,所要执行的语句的查询结果必须为一条,否则select就不知道你要选择哪一个来填充当前行了,所以会报单行子查询反回多个行的错误。

oracle数据库查询报错:ORA-01427: 单行子查询返回多个行
nvl是一个标量函数,在你的SQL语句中,nvl第一个参数是一个子查询。而该子查询是按日期统计用户登录的次数(group by t.riqi),如果查询范围在一天之内,因为t.riqi就是一个值,子查询的结果集中只有一条记录,是没有问题的;而如果查询的日期范围超出1天,且有用户在不同的日期有登录,那么子查...

求Oracle数据库大神 sql语句报单行查询返回多个行 怎么解决
错误的原因在于set (BCXY_NUM) = 后面的那个查询子句,其返回的结果集有不止一条数据,就不能作为单个值赋给BCXY_NUM,故发生错误。如果单单为了消除错误,你可以给该子查询加一个条件rownum = 1,限制只取一个记录。但是,这样是否符合逻辑,还要看你的具体需求了。

有没有大神指点一下SQL语句错哪了?显示单行子查询返回多个行
说明你有个条件查询子句,返回多个结果,所以才会报错

报错ora 01427
ORA 01427 是 Oracle 中单行子查询返回多行的错误,问题应定为在:job_id='MGR' 是否返回了多行数据(即job_id=MGR不止一条数据条目),如果返回多行,这个sql语句是报错的

ORA-01427:单行子查询多个行?
“select a.id,a.case_id,e.case_name,e.case_code,(select enddate from ol_apply_process where id=a.id and result =10) as enddate from ol_apply a,ol_case e”,报错ORA-01427:单行子查询返回多个行。解决方法:查询中肯定有返回多行的情况,试着在子查询中加入rownum<2,也就...

...写了批量更新提示 单行子查询返回多行 那位高手能不能帮忙改下吗...
“单行子查询返回多行”的意思就是说:本来应该用查询结果中的唯一一行数据结果去更新你要更新的原始的一行数据,但是查询结果却返回了多行数据,此时数据库不知道该使用这多行查询结果中的哪一行数据去更新你的原始数据,此时数据库就会报错:单行子查询返回多行。基于上述原理,解决这个问题的关键在于你要...

为啥子我排个序会报 单行子查询返回多个行
这个错误是由于你的查询结果有多行造成的,因为你要into给变量a,所以只能查出一行,应该在where条件处控制,确保查询结果只有一样数据。这样就不会报错了。如果不能确定记录为一行,可以这样写:select 字段1 into 变量a from 表a where 条件 and rownum = 1;1.rownum是oracle的伪列,通常用来做每条...

sql语句单行子查询返回多个行的问题
很明显啊,说明你的sno不是主键,数据不是唯一的 如果是sql server这样写 select (select top 1 grade from sc where sc.sno=t.sno) as 数据库 from sc t;oracle这样写 select (select grade from sc where sc.sno=t.sno and rownum=1) as 数据库 from sc t;...

相似回答