- PR -

Oracleデータベースの変更について

1
投稿者投稿内容
hide
会議室デビュー日: 2005/05/24
投稿数: 18
投稿日時: 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では可能なのでしょうか?
ゆいたん
ベテラン
会議室デビュー日: 2004/08/26
投稿数: 91
投稿日時: 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/01/24
投稿数: 65
お住まい・勤務地: 東京都
投稿日時: 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
hide
会議室デビュー日: 2005/05/24
投稿数: 18
投稿日時: 2005-06-05 00:09
こんばんは。
温州蜜柑様が作成したSQLを参考にして、実行しました。
結果は正常にデータを表示することができました。
温州蜜柑様、本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)