DECODE函数语法

时间:2014-09-30 08:53:12

标签: sql oracle

我需要回答以下问题,其中包含

enter image description here

我写了以下代码

SELECT job_id, 
DECODE(job_id,A, 'Ad_Pres',
B,'St_Man',
C,'IT_PROG',
)JOBID, GRADE
FROM emplyee_grade;
ORDER BY job_id
甲骨文告诉我"缺少表情"我在这做错了什么?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

DECODE(job_id,'A', 'Ad_Pres',
'B','St_Man',
'C','IT_PROG', <-- take this comma away
)

带走额外的逗号,我相信A,B,C需要单引号。

答案 1 :(得分:3)

您的查询有两种错误。

  1. 正如其他人已经建议的那样,语法错误,删除最后一个逗号。

  2. 功能,根据问题你做错了。问题是解码JOB_ID以显示所需的GRADEs,如图所示。

  3. 所以,正确的查询是:

    SQL> WITH DATA AS(
      2  SELECT 'AD_PRES' JOB_ID FROM DUAL UNION ALL
      3  SELECT 'ST_MAN' JOB_ID FROM DUAL UNION ALL
      4  SELECT 'IT_PROG' JOB_ID FROM DUAL UNION ALL
      5  SELECT 'THE REST' JOB_ID FROM DUAL)
      6  SELECT job_id,
      7    DECODE(JOB_ID, 'AD_PRES','A','ST_MAN','B','IT_PROG','C','THE REST','D','DEFAULT') GRADE
      8  FROM DATA
      9  /
    
    JOB_ID   GRADE
    -------- -------
    AD_PRES  A
    ST_MAN   B
    IT_PROG  C
    THE REST D
    
    SQL>