2015-07-22 15 views
0

我有这样的语法对于Oracle:甲骨文 - 使用情况与嵌套查询

select 'Tanggal : '||to_char(c,'DD-MON-YYYY hh:mm:ss')||',' as Tgl, 
case 
    when (select ((a.sk/b.tot)*100) 
      from (select count(to_char(response))sk 
      from log where response like '%OK%')a, 
     (select count(*)tot from log)b)<100 
    then (select 'Error : '||to_char(response),count(to_char(response)) je 
     from log 
     group by to_char(response) 
     order by je desc) 
    else 
     (select 'Success Rate : '||substr((a.sukses/b.total)*100,1,5)||' %,'as Success_rate 
      from (select count(to_char(response)) sukses from log where response like '%OK%')a, (select count(*) total from log)b) 
    end as test 
from log 
where rownum <= 1; 

但它发送错误信息ORA-00907: missing right parenthesis, 它指的是“为了通过JE递减”。
那么,我应该怎么做,没有错误?

+0

您忘记了标记其他** RDBMS **,如'sql server','db2','postgresql'。 –

+1

欢迎来到Stack Overflow。请通过http://stackoverflow.com/tour在发布时始终**格式化您的代码**。使用**标签时请注意**。并请张贴测试用例。只是问**“为什么这个代码不工作”**被认为是一个离题问题。用一些示例数据显示涉及的表格。 –

+0

您不能像这样使用订单。我想你想检索第一个值,所以在这种情况下,你应该使用第一个聚合函数。如果您检索2行,您的查询将失败。如果你只检索一行,你不需要按顺序。 – Steven

回答

0

您查询是十分可怕的,有万吨要做的事情,以改善这一点,但只是看在你的代码的怪事,有2个错误的语法

select ((a.sk/b.tot)*100) 
from (select count(to_char(response))sk 
from log where response like '%OK%')a, 
(select count(*)tot from log)b)<100 

,你必须 的一部分)a, (select ....这是不可能的。 这就像(a,b)< 100其中没有意义

然后order by也是错误的。只要删除它。然后再试一次