こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

集計についてのSQLの組み立て方

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 を組み込んだりしてもうまくいきませんでした。


どなたかご指導下さい。


よろしくお願いします。

投稿日時 - 2014-05-15 14:48:32

QNo.8596294

困ってます

質問者が選んだベストアンサー

テーブルの構成と正規化の状況がわからないので微妙ですが
こんな感じでは?


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

投稿日時 - 2014-05-15 15:02:11

お礼

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

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

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

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

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

投稿日時 - 2014-05-15 16:55:51

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問