在oracle

时间:2016-01-05 13:18:27

标签: sql 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       |

1 个答案:

答案 0 :(得分: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添加订单。