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

1行目は1、2行目は1~2、3行目は1~3
DBの中に
1,'item1',10
2,'item2',5
3,'item3',8
4,'item4',12
みたいなデータが入っていて、
そこからデータを引っ張ってきた時に
1,'item1',10
2,'item2',15
3,'item3',23
4,'item4',35
といった感じのデータの取り出し方というのは可能でしょうか?

A 回答 (2件)

>1行目は1、2行目は1~2、3行目は1~3



大原則として・・・
SQLにはn行目というあいまいな概念は使いません。
ただしorder byできちんと並び順が確定できるのであれば
ベタなやり方として、以下のようなやり方があります。

元テーブル
create table table_x (id int,item varchar(10),val int);
insert into table_x values(1,'item1',10),(2,'item2',5),(3,'item3',8),(4,'item4',12);

例1)変数をつかう
set @sum=0;
select id ,item ,@sum:=@sum+val as sum_val from table_x order by id;

例2)サブクエリを使えばソートする必要はありません。
SELECT id,item,
(SELECT SUM(val) FROM table_x AS x2 WHERE x2.id <= x1.id) AS sum_val
FROM table_x AS x1
    • good
    • 0

分かり易くするため、テーブルはtbl、項目を1列目から


id,name,valとします。理論を組み立てましょう。
(1)求める値はidが自分より小さいもののvalの合計
このままSQLにしてみます。
SELECT A.id,Max(name) AS item,Sum(B.val) AS SumValue
FROM tbl A LEFT JOIN tbl AS B ON A.id>=B.id
GROUP BY A.id
如何でしょうか。
    • good
    • 0

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