2016-01-05 2 views
0

Я пытаюсь решить эту проблему с помощью запроса ORACLE. Ниже приведены данные выборкиПроблема при запросе столбца псевдонима в oracle

|  Col1  |  Col2 | 
------------------------------------ 
| 21-dec-15  | nochange  | 
| 20-dec-15  | change  | 
| 20-dec-15  | nochange  | 
| 18-dec-15  | change  | 
| 18-dec-15  | nochange  | 

Здесь col2 - столбец псевдонима, а не столбец из таблицы.

Здесь необходимо указать конкретную дату, когда мне нужно проверить, происходят ли какие-либо изменения. Если изменения там, то обновите nochange до change на эту дату.

Как col2 является столбцом псевдонима, поэтому я не уверен, как его проверить. Я тоже в порядке, если мы сохраняем результат в отдельном столбце псевдонима.

Ожидаемый результат:

|  Col1  |  Col2 | 
------------------------------------ 
| 21-dec-15  | nochange  | 
| 20-dec-15  | change  | 
| 20-dec-15  | change  | 
| 18-dec-15  | change  | 
| 18-dec-15  | change  | 
+0

Что такое «ссылочная колонка»? –

+0

Это колонка с псевдонимом ..edited .. –

+0

По-прежнему не понимаешь - что такое «столбцы псевдонимов»? Вы имеете в виду, что он вычисляется в инструкции select, например 'select case when ... then 'change' else 'nochange' end'? –

ответ

2

Это следует сделать это:

with tempt as 
(
    <<Your existing query that returns col1 and col2>> 
) 
select t1.col1, 
     case when exists (select 1 from tempt t2 where t1.col1=t2.col1 and t2.col2='change') 
      then 'change' 
      else t1.col2 
     end 
    from tempt t1; 

Добавить заказ по col1, если это необходимо.

Смежные вопросы