当前位置: 代码迷 >> Oracle管理 >> sql语句报错,不是单组分组函数,该怎么解决
  详细解决方案

sql语句报错,不是单组分组函数,该怎么解决

热度:262   发布时间:2016-04-24 04:06:04.0
sql语句报错,不是单组分组函数,该如何解决
本帖最后由 ahking 于 2015-04-16 16:12:11 编辑

select (
(select num from table_number where dwdm='111' and rownum<=1 )-sum(ds))/
(to_date('2015-4-16','yyyy-mm-dd')-to_date('2015-01-01','yyyy-mm-dd')+1) 
from table_data n1 where dwdm ='111' and rq>=to_date('2015-01-01','yyyy-mm-dd') 



(select num from table_number where dwdm='111' and rownum<=1 可以获得唯一值,还是报错,不知该如何解决
------解决思路----------------------
楼主出现你这个问题是解析的时候Oracle不知道select num from table_number where dwdm='111' and rownum<=1 是唯一啊,他按照语法解析而已(没有那么智能,知道你里面是rownum<=1)。

要么换成这个:


SELECT ((SELECT num
          FROM table_number
         WHERE dwdm = '111'
           AND rownum <= 1) -
       (SELECT SUM(ds)
          FROM table_data
         WHERE dwdm = '111'
           AND rq >= to_date('2015-01-01', 'yyyy-mm-dd'))) /
       (to_date('2015-4-16', 'yyyy-mm-dd') - to_date('2015-01-01', 'yyyy-mm-dd') + 1)
  FROM dual;
  相关解决方案