電子書籍の厳選無料作品が豊富!

<テーブル>
年月日、号機、装置温度、外気温度、時刻

Oracle8において上記のテーブルが有り、復数台の装置に関して
毎日365日データを蓄積しています。

ある一定期間の範囲で、月毎に装置ごとに装置温度の最高、最低、平均、
求めたいのですが、select文はどのように記述したらよいのでしょうか。

select 号機, MAX(装置温度),min(装置温度),avg(装置温度)
from テーブル
where sdate between '2009/08/01' and '2009/08/02'
group by 号機;

上記のような記述で、一定期間における最大、最低、平均は求まりました。

これを月毎に求めたいのです。

結果は以下のように表示させたいと考えています。
号機、8月装置最大温度、8月装置最低温度、8月装置平均温度、9月装置最大温度、9月装置最低温度、9月装置平均温度…

よろしくお願いします。

A 回答 (1件)

8の環境がないので、動作する保障はできませんが、



select 号機,
max(decode(月, '08', "MAX装置温度")) as "8月装置最大温度",
max(decode(月, '08', "MIN装置温度")) as "8月装置最低温度",
max(decode(月, '08', "AVG装置温度")) as "8月装置平均温度",
max(decode(月, '09', "MAX装置温度")) as "9月装置最大温度",
max(decode(月, '09', "MIN装置温度")) as "9月装置最低温度",
max(decode(月, '09', "AVG装置温度")) as "9月装置平均温度"
from (
select 号機,
substr(年月日, 6, 2) as 月,
max(装置温度) as "MAX装置温度",
min(装置温度) as "MIN装置温度",
avg(装置温度) as "AVG装置温度"
from テーブル
where 年月日 between '2009/08/01' and '2009/09/30'
group by 号機, substr(年月日, 6, 2)
)
group by 号機;

月毎の表示を柔軟にしたければ、動的SQLにしてください。

# 本来はアプリケーションの仕事でしょう。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

項目名等を読み替えて、明後日に試して見ます。
9月以降も10月11月…と続くのですが、やはり
SQLの範疇ではないのですね。

月ごとに吐き出させて、上位側で処理することを検討いたします。

ありがとうございました。

お礼日時:2010/01/26 20:06

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