2014-12-07 2 views
0

Я работаю с таблицей со структурой как следующий: (не мой дизайн, не может быть изменен)Oracle: SELECT заявление GROUP BY п

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, когда я не ожидаю никаких результатов. Как объединить их вместе, чтобы запрос не возвращал результат?

+1

Вы должны использовать [Pivot] (http://oracle-base.com/articles/11g/pivot-and-unpivot-operators-11gr1.php) – OldProgrammer

ответ

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 
0

вам нужно использовать деликтный иск по конкретным обстоятельствам дела заявление не группы по

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