2014-09-30 103 views
-1

我需要回答以下問題,其內容DECODE函數的語法

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 

甲骨文告訴我「失蹤表達」我在做什麼這裏錯了嗎?

感謝您的幫助。

+0

要麼指定一個默認值或刪除最後一個逗號在解碼參數 – 2014-09-30 09:01:26

+0

您的查詢是錯誤的兩種方式,語法和功能。檢查我的答案。 – 2014-09-30 09:08:30

回答

3

您的查詢在兩個方面有誤。

  1. 正如已經被其他人則建議,有語法錯誤,去掉最後一個逗號。

  2. 功能,你是按照這個問題做錯了。問題是解碼JOB_ID以顯示所需的GRADEs,如圖所示。

所以,正確的查詢是:

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> 
+1

很好解釋。 – 2014-09-30 17:51:20

+0

謝謝@Patrick。我希望每個SQL問題都有一個測試用例,以減少逆向工程師的時間和精力,說什麼? – 2014-09-30 17:58:23

+0

是的,那很好。 – 2014-09-30 18:05:48

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

拿走額外的逗號,我相信A,B,C需要用單引號。

+0

謝謝@ dcp,但後來我得到無效的字符錯誤 – Marilee 2014-09-30 09:00:19

+0

@Marilee - 好的,看最新的編輯。 – dcp 2014-09-30 09:01:36

+0

@Marilee刪除命令之前的最後一個分號 – 2014-09-30 09:02:17