日付│収支│金額
──┼──┼──
8/4 │収入│2000
8/5 │収入│3000
8/6 │支出│1000
8/7 │支出│ 500
8/8 │収入│2000
というテーブルがあって、合計金額を出す
SQLはどうなるでしょうか?
収入の場合は足す、支出の場合は引いて、
合計5500円と結果が出るようにしたいです。
VB6でDAOを使ってます。
支出をマイナス値で書くように(1000じゃなくて-1000)したら、解決すると思いますけど、
そういう記述じゃだめなんですか?
データベースによってやり方が異なりますので
なんともいえませんが、DECODE(Oracleの場合)や
IIf(Jetの場合)のようなSQL関数(DBごとの方言)で
対処することが可能です。
正規化されているなら、「収支種別マスタ」のような、
収支IDと収支名を紐付けているマスタがあるはずですから、
「Value」フィールドか何か追加して、「1」「-1」のような
値を入れておけば、リレーションしてひっぱったValueを
金額に掛けてSumする、という方法もあります。
前述のお二人のとおりですが、参考までにJetでのSQL文を。
SELECT Sum(IIf(収支='収入',金額,-1*金額)) AS 合計金額, FROM テーブル;
こんなかんじになります。
ツイート | ![]() |