2017-04-24 37 views
-5
(
    (
    SELECT COUNT(*) AS TOTAL 
    FROM WTH 
    WHERE objstate IN ('Closed') 
    AND actual_date_finished > Sysdate -30 
    AND Trunc(requested_date_finished) = trunc(actual_date_finished) 
    AND contract LIKE NVL('$SITE$','%') 
)/(
    SELECT COUNT(*) 
    FROM WTH 
    WHERE objstate IN ('Closed') 
    AND actual_date_finished > Sysdate -30 
    AND contract LIKE NVL('$SITE$','%') 
) * 100 
) 
+0

?它本身並不是有效的SQL,因爲這裏有兩個單獨的語句。 – MT0

+1

我認爲你想在'SELECT'和'FROM DUAL'之間換行。你不需要最外面的支架。如果第二個計數返回0,會發生什麼? –

+0

這就是要問一個問題,並得到一個答案,希望能夠解決您的問題,並幫助其他人在這個過程中。因此,您應該將問題視爲人們可以理解的問題。 – BriteSponge

回答

2

你可以做到這一切在一個單一的SQL語句出現了右括號錯誤:你來運行這些查詢

SELECT CASE 
     COUNT(*) 
     WHEN 0  -- Handle division by zero 
     THEN NULL 
     ELSE COUNT(
       CASE 
        WHEN TRUNC(requested_date_finished) = trunc(actual_date_finished) 
        THEN 1 
       END 
      ) 
      /COUNT(*) 
       * 100 
     END 
FROM WTH 
WHERE objstate IN ('Closed') 
AND actual_date_finished > Sysdate -30 
AND contract LIKE NVL('$SITE$','%') 
+0

唯一的問題是可能被零除 - 否則此解決方案+1。 –

+0

@GoranStefanović固定,謝謝 – MT0

+0

謝謝你的工作。 – Keshani