重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【解消】通知が届かない不具合について

以下のようなデータがあります。
データはある積算データになっています。
時間ごとの差分はどのように抽出すればいいのでしょうか?

<元データ>
time    dt1 dt2 dt3
--------------------------
00:00:00  0  0  0
01:00:00  1  4  6
02:00:00  6  7  7
03:00:00  9  8  7

<欲しいクエリ>
time    dt1 dt2 dt3
--------------------------
01:00:00  1  4  6
02:00:00  5  3  1
03:00:00  3  1  0

以上よろしくお願いします

A 回答 (1件)

使用されているDBは何でしょうか?


time の間隔が 1:00:00 で固定だとすると
Oracle なら

select
  to_char(t2.time, 'HH24:MI:SS'),
  t2.dt1 - t1.dt1 dt1,
  t2.dt2 - t1.dt2 dt2,
  t2.dt3 - t1.dt3 dt3
from
  tbl t1,
  tbl t2
where
  t1.t = t2.t - 1/24;

Access なら
select
  t2.t,
  t2.d1 - t1.d1,
  t2.d2 - t1.d2,
  t2.d3 - t1.d3
from
  tbl as t1
  inner join tbl as t2 on ( t1.t = t2.t - 1/24 );

で目的のデータが取得できます。
SQL-Server も、おそらく Access と同じ書き方で取得できるんじゃないかと思います。

time の間隔が 1:00:00 とは限らないのであれば、また違った工夫が必要になりますが。
(time の間隔が 1:00:00 とは限らないかもしれないので、「自信なし」としておきます。)

この回答への補足

SQLを以下のようにしたら出来ました。
参考になりました。
有難うございました。

SELECT
  t2.t,
  t2.d1-t1.d1,
  t2.d2-t1.d2,
  t2.d3-t1.d3
FROM
  tbl AS t1
  INNER JOIN tbl AS t2
    ON hour(t1.t)=hour(t2.t)-1;

補足日時:2004/02/18 10:30
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
環境を書くのを忘れてました。
WIN2k、ACCESS2000です。

以下のような、テーブルを作成してテストしたら、
以下のようなクエリになってしまいました。
(3時のデータが抜けている)
取り急ぎ、ご報告まで

<tbl>
td1d2d3
1:00:00000
2:00:00244
3:00:00365
4:00:004106

<クエリ>
tExpr1001Expr1002Expr1003
2:00:00244
4:00:00141

お礼日時:2004/02/18 10:13

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

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