- - PR -
Oracleデータベースの変更について
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2005-06-03 23:08
いつもお世話になっております。
まず、Oracleで作成したデータベースがあります。 <社員番号>,<項目番号>,<項目名>,<数値データ> 1000,1250,身長,175 1001,1250,身長.174.5 1002,1250,身長,165 1000,1251,体重,65 1001,1251,体重,54 1002,1251,体重,60 1000,1252,体脂肪率,16 1001,1252,体脂肪率,14 1002,1252,体脂肪率,15 上のデータベースを使って下記に変更します。 <社員番号>,<身長>,<体重>,<体脂肪率> 1000,175,65,16 1001,174.5.54,14 1002,165,60,15 こういったデータベースの変更はOracleでは可能なのでしょうか? |
|
投稿日時: 2005-06-04 02:19
こんばんわ
例題どおりならDECODE関数を使えば変換可能かと思いますが、いかがでしょうか? ------------------------------ 元テーブルをaaaとし、カラムをa,b,c,dとしました。 select a "社員番号" , max(x) "身長" , max(y) "体重" , max(z) "体脂肪率" from ( select a , decode(b,1250,d,0) x , decode(b,1251,d,0) y , decode(b,1252,d,0) z from aaa ) group by a ; 元ネタが例題どおりという条件はありますが。 ストアド使うかMS-Accessのピボットテーブルのほうが楽かなぁ。 では。 [ メッセージ編集済み 編集者: ゆいたん 編集日時 2005-06-04 02:37 ] |
|
投稿日時: 2005-06-04 02:34
こんばんは。
ちょっと苦しいですが、こんなのはいかがでしょう? create table sample ( 社員番号 number(4), 項目番号 number(4), 項目名 varchar2(12), 数値データ number(5,1) ); insert into sample values(1000,1250,'身長',175); insert into sample values(1001,1250,'身長',174.5); insert into sample values(1002,1250,'身長',165); insert into sample values(1000,1251,'体重',65); insert into sample values(1001,1251,'体重',54); insert into sample values(1002,1251,'体重',60); insert into sample values(1000,1252,'体脂肪率',16); insert into sample values(1001,1252,'体脂肪率',14); insert into sample values(1002,1252,'体脂肪率',15); commit; SQL> l 1 select 2 t.社員番号, 3 t.身長, 4 w.体重, 5 f.体脂肪率 6 from 7 ( select 社員番号, 数値データ as 身長 from sample where 項目名 = '身長') t, 8 ( select 社員番号, 数値データ as 体重 from sample where 項目名 = '体重') w, 9 ( select 社員番号, 数値データ as 体脂肪率 from sample where 項目名 = '体脂肪率') f 10 where 11 t.社員番号 = w.社員番号 and 12* t.社員番号 = f.社員番号 SQL> / 社員番号 身長 体重 体脂肪率 ---------- ---------- ---------- ---------- 1000 175 65 16 1001 174.5 54 14 1002 165 60 15 |
|
投稿日時: 2005-06-05 00:09
こんばんは。
温州蜜柑様が作成したSQLを参考にして、実行しました。 結果は正常にデータを表示することができました。 温州蜜柑様、本当にありがとうございました。 |
1
