2

これをどのように表現すればよいかわかりません。これを返す選択があるとします。

Name, month, amount
John, June, 5
John, July,6
John, July, 3
John August, 10

そして、月ごとの最初の残高を集計して報告したいと考えています。

名前、月、開始残高。

john, may, 0
john, june, 0
john, july, 5
john, august, 14
john, September, 24

セルの数式を使用して Excel でこれを行うことができますが、値をどこかに保存せずに SQL で行うにはどうすればよいですか? 左外部結合を実行できる会計月の別のテーブルがあるため、すべての月が報告されますが、SQL で前の月から集計する方法がわかりません。

4

3 に答える 3

2
select
name
, month
, (select sum(balance) from mytable 
   where mytable.month < m.month and mytable.name = m.name) as starting_balance
from mytable m
group by name, month

これはウィンドウ関数ほど優れていませんが、データベースごとに異なるため、使用しているシステムを指定する必要があります。

そして、それはインラインサブクエリであり、あまりパフォーマンスが高くありません。しかし、少なくとも何が起こっているのかを理解するのは簡単です!

于 2012-10-12T09:53:43.777 に答える
0

月が日付として表されていると仮定すると、これにより現在の合計が得られます。

select t1.name, t1.month, sum(t2.amount)
from yourtable t1
left join yourtable t2 
     on t1.name = t2.name
     and t1.month>t2.month
group by t1.name, t1.month
于 2012-10-12T09:54:46.093 に答える
0

このようにグループ化を使用します

SELECT NAME, MONTH , SUM(Balance) FROM table GROUP BY NAME, MONTH
于 2012-10-12T09:51:14.863 に答える