プロが教えるわが家の防犯対策術!

表題の通り、クロス集計されたデータを元に戻す方法を探しています。

現在あるシステムにおいて出力されるデータが以下の様な形式だったとします。
(このデータ出力形式は変更が出来ないものとします。)

■元のデータ形式

時刻, A, B, C, D,

1:00, 1, 2, 3, 4,
2:00, 2, 3, 4, 5,
3:00, 3, 4, 5, 6,
4:00, 4, 5, 6, 7,
....


■目標とするデータ形式

時刻, 分類, 値,

1:00, A, 1,
1:00, B, 2,
1:00, C, 3,
1:00, D, 4,
2:00, A, 2,
2:00, B, 3,
2:00, C, 4,
2:00, D, 5,
...

※フォントがずれるので見辛いかもしれませんがご理解願います。


なお時刻はここでは1:00~24:00までの24個

分類項目は特定の個数
(ここではx個あるとします)



データを保存、集計するうえで、クロス集計されているデータ形式は非常に使いにくく、
何とかして目標とする形に変換したいと考えております。

どなたか良い変換方法をご存知でしょうか?


またデータベースの基本的な考え方として、やはりテーブルのデータ構造は
今回目標とする様な構造が良いのでしょうか?

一応ある程度データベースを知っている人の意見で今回の変換を考えたのですが、
処理をする上で理想的な構造とはどういったものでしょうか?

A 回答 (2件)

時刻と分類の組み合わせがユニークなのであれば


ユニオンクエリで組みかえられます

select 時刻,"A" as 分類,[A} as 値
from 元のテーブル
union all
select 時刻,"B" as 分類,[B} as 値
from 元のテーブル
union all



select 時刻,"X" as 分類,[X} as 値
from 元のテーブル

>データベースの基本的な考え方として、やはりテーブルのデータ構造は
>今回目標とする様な構造が良いのでしょうか?
そのとおりです
    • good
    • 0
この回答へのお礼

ご返答いただきありがとうございます!ユニオンクエリ、聞いたことはありましたが実際に使ったことはありませんでした。
なんとか目標とする形に変換することが出来ました!ありがとうございました。

お礼日時:2007/10/09 09:27

こんにちは。



 貴方が書かれたサンプルデータを見ると、「時刻」ごと、「分類」ごとに1個のデーターしかないようですが、実際のデータもそのような構造なのですか。それであったら、実質的には集計というより、並び替えになっていると思います。
 本当のクロス集計は、縦横の項目ごとに複数のデータを足し算しますので、足し算した結果が、「3」であっても、「値」1のデータが3個なのか、「値」3のデータが1個なのかを知るすべはありません。

では。

この回答への補足

反応いただきありがとうございます。
たしかに考えてみるとクロス集計というより並び替えされてクロス集計のような形になっている、が正しかったですね!
この並び替えを元に戻す方法を探しておりました。

補足日時:2007/10/05 08:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す