- ベストアンサー
1行目は1、2行目は1~2、3行目は1~3
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 といった感じのデータの取り出し方というのは可能でしょうか?
- みんなの回答 (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
その他の回答 (1)
- nda23
- ベストアンサー率54% (777/1415)
分かり易くするため、テーブルは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 如何でしょうか。