2014-03-14 28 views
1

我有一個名爲jobs的Oracle表。在這張表中,我有2個工作,工作1和工作2。我需要根據以下條件獲得一份工作。使用2個條件對Oracle表中的數據進行排序

  1. IS_ASSIST JOB_PROCESS必須有一個JOB_PROCESS_STATE = '0'JOB 1和2都滿足這個要求。
  2. 如果這兩個作業'IS_ASSIST的狀態爲0,則獲得具有JOB_PROCESS = IS_PULLAHEADJOB_PROCESS_STATE = 1的作業。

這應該得到ID = 4的最後一行。我將如何在查詢中編寫這些條件?這是一個只適用於第一個條件的例子。我將如何應用第二個條件?

SELECT JOB_ID 
FROM JOB 
WHERE JOB_PROCESS = 'IS_ASSIST' 
AND JOB_PROCESS_STATE = '0' 

作業表:

+-------------------------------------------+ 
|ID |JOB_ID| JOB_PROCESS |JOB_PROCESS_STATE| 
+-------------------------------------------+ 
| 1 | 1 | IS_ASSIST |  0   | 
|-------------------------------------------| 
| 2 | 1 | IS_PULLAHEAD |  0   | 
|-------------------------------------------| 
| 3 | 2 | IS_ASSIST |  0   | 
|-------------------------------------------| 
| 4 | 2 | IS_PULLAHEAD |  1   | 
+-------------------------------------------+ 

預先感謝您!

回答

1

就拿第一條記錄從該查詢

select JOB_ID 
from JOB 
where JOB_ID IN 
(
    SELECT JOB_ID 
    FROM JOB 
    WHERE JOB_PROCESS = 'IS_ASSIST' AND JOB_PROCESS_STATE = '0' 
    GROUP BY JOB_ID 
) 
ORDER BY case when JOB_PROCESS = IS_PULLAHEAD AND JOB_PROCESS_STATE = 1 
       then 0 
       else 1 
     end 
+0

太謝謝你了! – user3106248

相關問題