-3

*使用解码..

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

提前致谢

4

2 回答 2

2

试试这样。。

 SELECT ENAME, SAL, 
    (Case when COMMISSION>0 then Cast(COMMISSION as Varchar2(20)) Else 'Sorry' End) as  Comments
    FROM EMP
    ORDER BY COMISSION
于 2013-05-08T05:36:00.157 回答
0

这是一个使用 DECODE 的示例,但AmitSingh的 CASE 示例更简洁

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

如果 comm < 0,SIGN 函数将返回 -1,如果 comm 为 0,则返回 0,如果 comm > 0,则返回 1,因此如果 SIGN(comm) 返回 1,则表示 comm 大于 0。否则没有佣金。

于 2013-05-08T11:34:37.997 回答