gooID利用規約 改定のお知らせ

SQLについての質問です。
MySQLを使っています。


1か月間の得意先別の入金の集計を取りたいと思っています。
表としては以下のような感じです。

ID  得意先名  現金計 振込計 相殺計 手数料計  合計
===========================================================
001 aaaaaaa   30,000  40,000  25,000    840  95,840
002 bbbbbbb   10,000  20,000  30,000    420  60,420


SELECT * sum(nyukin) AS genkin
FROM nyukin_meisai
WHERE tokuisaki_id = '001'
AND nyukin_kubun = '現金'
AND uriage_bi BETWEEN '2014/05/01' AND '2014/05/31'

SELECT * sum(nyukin) AS furikomi
FROM nyukin_meisai
WHERE tokuisaki_id = '001'
AND nyukin_kubun = '振込'
AND uriage_bi BETWEEN '2014/05/01' AND '2014/05/31'

以下続く

と得意先毎/各区分ごとに一つひとつSQLを発行すればできるんでしょうけど、
これをひとつのSQLで実現したいと思っていますがSQLをどのように組み立て
てよいものやら困っています。
case を組み込んだりしてもうまくいきませんでした。


どなたかご指導下さい。


よろしくお願いします。

A 回答 (1件)

テーブルの構成と正規化の状況がわからないので微妙ですが


こんな感じでは?


SELECT tokuisaki_id
,sum(nyukin*(nyukin_kubun='現金')) AS 現金計
,sum(nyukin*(nyukin_kubun='振込')) AS 振込計
,sum(nyukin*(nyukin_kubun='相殺')) AS 相殺計
,sum(nyukin*(nyukin_kubun='手数料')) AS 手数料計
,sum(nyukin) AS 合計
FROM nyukin_meisai
WHERE
AND uriage_bi BETWEEN '2014/05/01' AND '2014/05/31'
GROUP BY tokuisaki_id
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございました。

教えて頂いたSQLでバッチリうまくいきました。

ほんとうにありがとうございました。

sum(nyukin*(nyukin_kubun='現金'))
こんな表現、初めて見ました。
感心してます。

ありがとうございました。

お礼日時:2014/05/15 16:55

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


人気Q&Aランキング