ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3021016 金額の計算方法
質問者:rusya 以下のようなテーブルがあります。

hiduke | syuusi | tekiyou | kingaku | bikou
2007-5-8 | 収入 | 給料 | 48000 | バイト代
(以下数十件続く)

このテーブルから、次のようにして収入と支出の5月分の合計を求めました。

select syuusi,sum(kingaku) from suitoh_table where hiduke like '2007-5-%' group by syuusi;

syuusi | sum
収入 | 61000
支出 | 15080

するとこのように表示されるのですが、ここからさらに「収入−支出」と計算するにはどうすればいいのでしょうか?
最初のselect文の段階で、収入−支出の計算までさせたいのですが・・・。
困り度:
  • 困っています
質問投稿日時:
07/05/22 14:56
この質問に対する回答は締め切られました。

回答良回答20pt

ANo.5 どうしても縦(=別の行として)に表示したいですか?

横に並べる形でもいいなら、簡単なSQLで実現可能と思います。

select
sum(case syuusi when '収入' then kingaku else 0 end) as 収入,
sum(case syuusi when '支出' then kingaku else 0 end) as 支出,
sum(case syuusi when '収入' then kingaku
when '支出' then -kingaku
else 0 end) as 収支
from suitoh_table
where hiduke like '2007-5-%'
and syuusi in('収入','支出')
;
回答者:chukenkenkou
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
07/05/24 22:06
この回答へのお礼遅くなりましたが、回答ありがとうございました。

回答

ANo.4 あああ、ごめんなさい!!
支出と収入のあとに'を入れておいてください。

連続投稿すみませんm(__)m
回答者:ikiss
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
07/05/24 16:42
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.3 下のSQL文、間違えました。

select sum(c.kingaku) from
(select syuusi,sum(kingaku) from suitoh_table where hiduke like '2007-5-%' group by syuusi having syuusi = '収入
union all
select syuusi,sum(kingaku) * -1 from suitoh_table where hiduke like '2007-5-%' group by syuusi having syuusi = '支出) c
group by c.syuusi;
回答者:ikiss
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
07/05/24 16:40
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.2 テスト環境がないので、実験的なこともかねて。
以下のSQLでは駄目ですかね?

select syuusi sum(kingaku) from c group by c.syuusi
(select syuusi,sum(kingaku) from suitoh_table where hiduke like '2007-5-%' group by syuusi having syuusi = '収入
union all
select syuusi,sum(kingaku) * -1 from suitoh_table where hiduke like '2007-5-%' group by syuusi having syuusi = '支出) c;
回答者:ikiss
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
07/05/24 16:37
この回答へのお礼遅くなりましたが、回答ありがとうございました。

回答

ANo.1 収入と支出のそれぞれの合算を、2レコードで取り出すように期待されている以上、できないと思います。

支出をマイナス値でセットしておけばあるいは…とも思いましたが、2レコードで取り出すことを期待されている以上、変数にセットして演算する必要があると思います。
回答者:TA-HT81S
種類:アドバイス
どんな人:専門家
自信:参考意見
回答日時:
07/05/22 16:38
この回答へのお礼遅くなりましたが、回答ありがとうございました。