0

値に基づいてレコードを折りたたむ方法について、このソリューションを使用しようとしています。

表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

データベースはオラクルです。私はこの問題に取り組むことができるように、この問題を解決する方法について少し始める必要があります。

前もって感謝します..

編集:表1と表2にEMP_NAME列があると仮定します。しかし、この列をgroup byとしてtable2にロードすることはできません。(Pablo Santa Cruzによって提供されたsolnについて話しています)

これに関する解決策。

編集: テーブル構造を編集しました..混乱してすみません

4

1 に答える 1

2

これを試して:

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

テーブルに実際に値を格納する必要がある場合はtable_2、前の SQL ステートメントを で開始しますcreate table table_2 as

コメントしたことを考慮して、次のことができます。

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から、新しい列を含めるために を実行することです。

于 2012-05-16T17:55:45.707 に答える