- - PR -
1つのカラムのデータを、複数カラムに分離して取得
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-12-07 09:28
JSPからJDBCでデータベースのデータを取得して表示するWebアプリケーションを作成しています。
そこで『日付のカラム』と『値のカラム』を持つテーブルからデータを取得するのですが、 その際、『それぞれの年の同月データ』を別カラムとして取得する方法を探しています。 例えば、以下のようなテーブルがあるとして、 timeStamp_________ | data --------------------+----- 2004-04-01 08:30:00 | 23.5 2004-04-02 08:30:00 | 23.6 2004-04-03 08:30:00 | 23.7 2004-04-04 08:30:00 | 23.8 . . . 2005-04-01 08:30:00 | 23.9 2005-04-02 08:30:00 | 24.5 2005-04-03 08:30:00 | 24.6 これを、以下のような形で取得したいのです。 date__________| 2004 | 2005 ---------------+------+------ 04-01 08:30:00 | 23.5 | 23.9 04-02 08:30:00 | 23.6 | 24.5 04-03 08:30:00 | 23.7 | 24.6 04-04 08:30:00 | 23.8 | null . . . 現在、SQLでこの変換を行う方法が見つからないので、仕方なく WHERE extract (month from timeStamp) = "4" のような形で全ての年の対象月のデータを1列で取得して、 あとはJSPのJava部分でtimeStampカラムの文字列を解析して年毎に分離、というような力技を使ってます。 もしSQLで行える方法がありましたら、ご教授ねがえないでしょうか? | ||||
|
投稿日時: 2005-12-07 10:06
DBMSの種類は何でしょうか?
DBMSによってはOLAP用の集計関数をサポートしているので可能かもしれません。 | ||||
|
投稿日時: 2005-12-07 10:10
説明足らずで失礼しました。
PostgreSQLの7.4.8です。 蛇足ながら、 OSはCentOS(RedHat系Linux)の4.2です。 JSPコンテナはTomcat4.1もしくは5.0で、 JDBCドライバはpg74.216.jdbc3.jar です。 | ||||
|
投稿日時: 2005-12-07 10:26
PostgreSQLの7.4.8にそうした機能はないみたいですね。
| ||||
|
投稿日時: 2005-12-07 10:44
おはようございます。
ベタベタですけど・・・
MSのSQLServerの構文で申し訳ないです。 サブクエリで年月時分秒のみの表を作っといて、メインクエリで年ごとのデータを取得するってかんじです。 または、PL/pgSQLでカーソルとか使ってみるとか。 参考になればよいのですが・・・ [ メッセージ編集済み 編集者: かめたろ 編集日時 2005-12-07 10:53 ] | ||||
|
投稿日時: 2005-12-08 12:43
Anthyhimeさん、かめたろさん
ありがとうございます。 教えていただいたコードはそのままPostgreSQLで実行する事はできないようですが、 ロジックの流れとしてはわかりましたので、PostgreSQLで実現可能な文に変えて試してみようと思います。 OLAP用の関数がなかったのは残念ですが、おかげでopenOLAPなるソフトウェアを見つけることができたので、ちょっと用途は異なりますが勉強になりました。 |
1