2013-05-08 16 views
-3

*使用解碼..我想列出的員工,如果的Emp是具有委員會我想通訊(數字)如果EMP要沒有一個通訊那麼對不起

SELECT ENAME, SAL, 
DECODE 
(
COMM, 
COMM >=0, (SELECT COMM FROM EMP WHERE COMM>=0),--I KNOW THIS IS A MISTAKE 
'NO COMM' 
) COMMISSION 
FROM EMP 
ORDER BY COMISSION 
  • 我們能寫算術運算在DECODE

這是錯誤我得到

COMM >=0, (SELECT COMM FROM EMP WHERE COMM>=0), 
    * 
ERROR at line 5: 
ORA-00907: missing right parenthesis 

在此先感謝

+1

請在室內的聲音!在撰寫你的文章時不需要關閉。 – Patashu 2013-05-08 05:38:34

+0

20年前,意外使用大小寫鎖定鍵有時是可以使用的。不再。 – 2013-05-08 05:50:36

+0

感謝您的啓發...我寫道,因爲要清楚 – TEMPLATE 2013-05-08 06:17:45

回答

2

嘗試這樣的..

SELECT ENAME, SAL, 
    (Case when COMMISSION>0 then Cast(COMMISSION as Varchar2(20)) Else 'Sorry' End) as Comments 
    FROM EMP 
    ORDER BY COMISSION 
+0

@AMITHSINGH感謝AMITH ...它是有用的,但我想通過COMM' – TEMPLATE 2013-05-08 05:40:01

+0

@TEMPLATE COMMER FIGLES(REAL)我編輯我的答案立即嘗試 – 2013-05-08 05:42:12

+0

收到此錯誤的兄弟'行錯誤2: ORA-00906:缺少左parenthesis' – TEMPLATE 2013-05-08 06:15:59

0

使用DECODE下面是一個例子,但AmitSingh的案例是清潔

SELECT ename, 
     sal, 
     DECODE(SIGN(comm), 1, TO_CHAR(comm), 'No Comm') commission 
    FROM emp 

SIGN函數將返回-1,如果通訊是< 0,如果comm爲0,則爲0;如果comm> 0,則爲1,因此如果SIGN(comm)返回1,則表示comm大於0.否則不存在佣金。

相關問題