Oracle:SELECT语句GROUP BY子句

时间:2014-12-07 18:20:03

标签: oracle

我正在使用具有以下结构的表:(不是我的设计,不能更改)

Columns:    foreign_key    job_type    job_code
            1              1           AA
            1              2           BB
            2              1           
            2              2           CC

job_type中的值只能是1或2. job_code中的值可以是任何varchar。

我尝试按以下顺序从此表中获取行:

            foreign_key    job_type_1_code    job_type_2_code

我的搜索查询是这样的:

select foreign_key
from my_table
    where
    ( job_type = 1 and job_code like 'D%'
      or
      job_type = 2 and job_code like 'in_job_2_code%'
    )
group by foreign_key

我遇到的问题是,当我没有任何结果时,会返回job_code BB和CC。 如何将这些组合在一起以便查询不会返回任何结果?

2 个答案:

答案 0 :(得分:1)

如果您始终拥有两种工作类型的记录,则以下查询有效:

SELECT a.foreign_key, a.job_code as job_type_1_code, b.job_code as job_type_2_code,
FROM table_name a INNER JOIN table_name b ON a.foreign_key = b.foreign_key 
    AND a.job_type = 1 AND b.job_type = 2

答案 1 :(得分:0)

您需要使用 CASE 语句而不是分组

select foreign_key, 
 case job_type when 1 then job_code else null end as job_type_1_code,
 case job_type when 2 then job_code else null end as job_type_2_code
from your_table