2014-03-14 27 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

相关问题