如果值未更改,则折叠日期记录

时间:2012-05-16 17:54:03

标签: sql oracle

我正在尝试使用此解决方案来解决如何根据值折叠记录。

表1(输入)

 Emp_ID Start_Date  End_Date    Rating  Department  Salary
2000    01012011    12312011    A   HR          10000
2000    01012012    12319999    A   HR          20000
3000    01012011    12312011    B   Operations  50000
3000    01012012    12312012    B   Operations  60000
3000    01012013    12319999    C   Operations  70000

表2(输出)

 Emp_ID Start_Date  End_Date    Rating  Department
2000    01012011    12319999    A   HR
3000    01012011    12312012    B   Operations
3000    01012013    12319999    C   Operations

数据库是oracle。我只需要开始研究如何解决这个问题,以便我能够解决这个问题。

先谢谢..

编辑:假设表1&表2列出了EMP_NAME专栏。但我无法在table2中加载此列作为组,不要让我这样做..(我正在谈论Pablo Santa Cruz给出的解决方案)

任何解决方案......

编辑:编辑表格结构agan..sorry for confusion

1 个答案:

答案 0 :(得分:2)

试试这个:

select emp_id, rating, min(start_date), max(end_date)
  from table_1
 group by emp_id, rating

如果您需要在table_2表上实际存储值,请使用create table table_2 as启动上一个SQL语句。

考虑到你的评论,你可以这样做:

create table table_2 as
select emp_id, rating, min(start_date), max(end_date), 
       'EMP_DEPT_INFO' as emp_deparment
  from table_1
 group by emp_id, rating

其他可能性可能是首先创建表,然后执行alter table以包含新列。