dポイントプレゼントキャンペーン実施中!

テーブル1のデータを計算してテーブル2を作成したいと考えております。
計算については"数値"を更新日付の一つ前の値と引き算してその結果をテーブル2に挿入したいと思ってます。

テーブル1
ID 数値 更新日付
001 23 2008/02/23 2:00:00
001 34 2008/02/23 3:00:00
001 50 2008/02/23 4:00:00
001 23 2008/02/23 5:00:00
002 25 2008/02/23 3:00:00
002 50 2008/02/23 4:00:00
002 70 2008/02/23 5:00:00
002 50 2008/02/23 6:00:00

結果
テーブル2
ID 数値 更新日付
001 11  2008/02/23 3:00:00
001 16  2008/02/23 4:00:00
001 -27 2008/02/23 5:00:00
002 25  2008/02/23 4:00:00
002 20  2008/02/23 5:00:00
002 -20 2008/02/23 6:00:00

一応考えたのですが
SELECT *
FROM テーブル1 AS a, テーブル1 AS b
WHERE (((a.ID)=[b].[ID]) AND ((b.更新日付)=(select min(更新日付) from テーブル1 as b where a.更新日付 < b.更新日付)))
ORDER BY a.ID, a.更新日付);

として、aとbの数値を引き算しようと考えていますが、可能なのでしょうか?

ぜんぜん別の方法でもいいので教えていただけないでしょうか?

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

A 回答 (1件)

前の質問を締め切らずに継続する質問をする行為は、「続きの質問」として、ここでは規約違反です。



RDBMS名とバージョンを明示するように求めましたが、なぜ提示がないのでしょう?せっかく具体的なSQLを提示しても、dekinaikunさんの環境では実行できない可能性があります。

>aとbの数値を引き算しようと考えていますが、可能なのでしょうか?

可能かどうかと言われれば、可能です。
しかし、RDBには、「前の行」や「後の行」という概念がないので、利用者側で通番を付けるといった工夫が必要になります。また、そういった操作は、SQLだけでやるより、ストアドプロシジャを使うとか、アプリケーション側でやる方が、シンプルだし性能も出せます。

以下のように、表定義やデータを格納するSQLを貼り付けておくと、アドバイスする側としてもすぐに検索SQLの作成に入れるので、多くの人から早くアドバイスをもらえると思いますよ。

1.表定義例
create table tbl1
(seqno int identity(1,1),
id int,
数値 int,
更新日付 datetime);

2.格納データ例
insert into tbl1(id,数値,更新日付) values(1,23,'2008/02/23 2:00:00');
insert into tbl1(id,数値,更新日付) values(1,34,'2008/02/23 3:00:00');
insert into tbl1(id,数値,更新日付) values(1,50,'2008/02/23 4:00:00');
insert into tbl1(id,数値,更新日付) values(1,23,'2008/02/23 5:00:00');
insert into tbl1(id,数値,更新日付) values(2,25,'2008/02/23 3:00:00');
insert into tbl1(id,数値,更新日付) values(2,50,'2008/02/23 4:00:00');
insert into tbl1(id,数値,更新日付) values(2,70,'2008/02/23 5:00:00');
insert into tbl1(id,数値,更新日付) values(2,50,'2008/02/23 6:00:00');

3.検索例
select
x.id,
x.数値-(select 数値
from tbl1
where seqno=x.seqno-1) as 数値,
x.更新日付
from tbl1 as x
where x.seqno>all (select min(seqno) from tbl1 where x.id=id)
order by x.id,x.更新日付
;
    • good
    • 2

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

このQ&Aを見た人はこんなQ&Aも見ています

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