2015-07-22 46 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也是錯誤的。只要刪除它。然後再試一次