みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

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

締切り済みの質問

複数から成るテーブルを元に特定の月を集計するSQL

MAINテーブルとITEMテーブルの2つがあります。両方のテーブルともIDが主キーです。

MAINテーブル
Field #01: Alias:ID Type:INTEGER
Field #02: Alias:CDATE Type:TIMESTAMP
※他にもいくつかフィールドが存在するが割愛

ITEMテーブル
Field #01: Alias:ID Type:INTEGER
Field #02: Alias:ITEM Type:STRING(20)
Field #03: Alias:INCOME Type:NUMERIC(18,4)
Field #04: Alias:OUTGO Type:NUMERIC(18,4)
Field #05: Alias:REFID Type:INTEGER

ここから、特定の年月を持つMAIN.CDATEのMAIN.ID(複数個存在する場合あり)とITEM.REFIDが一致するデータより、ITEM.INCOMEの総計からITEM.OUTGOの総計を差し引いた値を取得するSQL文を1回のクエリーで実装したいと考えています。

文章ではなかなか説明しづらいのですが、下記のようなSQL文をイメージしています。もちろんこれは正しい結果を返しませんので、どのようにSQL文を記述すれば正しい結果を得られるかの知恵をお貸しください。
/* 2010年1月の収支 */
select SUM(income) - SUM(outgo) from item where id = (select id from main where extract(year from cdate) = 2010 AND extract(month from cdate) = 1);

投稿日時 - 2010-01-06 21:26:39

QNo.5573038

困ってます

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

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

回答(1)

ANo.1

これはホントにMySQLへの質問でしょうか?

普通のSQLであればIDをキーにINNER JOINして、
cdateはbetweenで処理すればよいのでは?

投稿日時 - 2010-01-07 15:52:05

あなたにオススメの質問