
テーブル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件)
- 最新から表示
- 回答順に表示
No.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.更新日付
;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
Access パラメータクエリをcsv...
-
VIEWの元のテーブルのindexって...
-
SQL Left Join で重複を排除す...
-
select文のwhere句に配列を入れ...
-
Unionした最後にGROUP BYを追加...
-
[MySQL] 3つのテーブルの結合で...
-
WordpressのContact form 7でzi...
-
SQLにて特定の文字を除いた検索...
-
エクセルの関数について教えて...
-
LEFT JOIN と GROUP BY
-
クエリ表示と、ADOで抽出したレ...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
カラム名でseqとidではどちらが...
-
EXPLAINのtypeがALLのときの対...
-
NOT INをNOT EXISTSで書き直したい
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
副問合せの書き方について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
VIEWの元のテーブルのindexって...
-
エラー 1068 (42000): 複数の主...
-
SQLサーバから、項目の属性(型...
-
select文のwhere句に配列を入れ...
-
SQL Left Join で重複を排除す...
-
Access パラメータクエリをcsv...
-
マイクラPC版のコマンドで効率...
-
【Transact-sql】 execの結果を...
-
sqlで、600行あるテーブルを100...
-
SQLにて特定の文字を除いた検索...
-
1テーブル&複数レコードの更新...
-
PL/SQLの変数について
-
WordpressのContact form 7でzi...
-
複数テーブルのGROUP BY の使い...
-
バインド変数について
-
inner joinをすると数がおかし...
-
MySQLのint型で001と表示する方...
-
updateを1行ずつ実行したい。
おすすめ情報