- 締切済み
SQLの書き方について
(1)の様なテーブルから結果を(2)の様にしたいのですが どのようなSQLを書いたら表示できるのかわかりません。 アドバイスなどをお願い致します。 (新たにView等を作成するなどでもかまいません。) (1)dept_id / item_id / day / time (カラム) 1111 / 0001 / 20090101 / 60 (レコード1) 1111 / 0001 / 20090102 / 30 (レコード2) 1111 / 0002 / 20090101 / 40 (レコード3) 1112 / 0001 / 20090101 / 30 (レコード4) (2)dept_id / item_id / time1 / time2 1111 / 0001 / 60 / 30 1111 / 0002 / 40 / 1112 / 0001 / 30 /
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- o123459876
- ベストアンサー率59% (19/32)
10g以降ならmodel句も使えます。 利点はなんとなくカッコいいところです。 select dept_id,item_id,item1,item2 from tab model return updated rows partition by (dept_id,item_id) dimension by (Row_Number() over(partition by dept_id,item_id order by dept_id,item_id) as rn) measures(time as item1,time as item2) rules(item2[1] = item2[2]) order by dept_id,item_id -- 結果 -- DEPT_ID ITEM_ID ITEM1 ITEM2 1111 0001 60 30 1111 0002 40 1112 0001 30
- dda167
- ベストアンサー率76% (55/72)
たとえば…… select dept_id, item_id, max(case when rn = 1 then time else null end) as time1, max(case when rn = 2 then time else null end) as time2 from ( select dept_id, item_id, time, row_number() over (partition by dept_id, item_id order by day) as rn from t ) group by dept_id, item_id order by dept_id, item_id のようになります。