電子書籍の厳選無料作品が豊富!

以下のようなテーブルがあります。

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文の段階で、収入-支出の計算までさせたいのですが・・・。

A 回答 (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('収入','支出')
;
    • good
    • 0
この回答へのお礼

遅くなりましたが、回答ありがとうございました。

お礼日時:2007/06/04 12:01

あああ、ごめんなさい!!


支出と収入のあとに'を入れておいてください。

連続投稿すみませんm(__)m
    • good
    • 0

下の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;
    • good
    • 0

テスト環境がないので、実験的なこともかねて。


以下の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;
    • good
    • 0
この回答へのお礼

遅くなりましたが、回答ありがとうございました。

お礼日時:2007/06/04 12:02

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



支出をマイナス値でセットしておけばあるいは…とも思いましたが、2レコードで取り出すことを期待されている以上、変数にセットして演算する必要があると思います。
    • good
    • 0
この回答へのお礼

遅くなりましたが、回答ありがとうございました。

お礼日時:2007/06/04 12:01

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