• 締切済み

このような結果が得られるSQL文はどのように書けばいいのでしょうか?

お世話になります。 どなたかご教授下さい。 下記のようなテーブルが2つあります。 table1 ・customer_id ・fromdate ・todate table2 ・customer_id ・executedate ・amount やりたいことは、顧客([customer_id])ごとに集計期間(executedate between [fromdate] and [todate])が異なるのですが、 その顧客ごとの集計期間内における総数(sum([amount])を出したいのです。 ただ、どのようにSQLを書けばいいのか検討がつかないので、どなたかご教授いただければなと思います。

みんなの回答

  • root139
  • ベストアンサー率60% (488/809)
回答No.2

CASE式を使っても実現できます。 例) --------------------------------------------------------------- SELECT t1.customer_id, SUM(CASE WHEN executedate BETWEEN fromdate AND todate THEN amount ELSE 0 END) FROM table1 t1 INNER JOIN table2 t2 ON t1.customer_id = t2.customer_id GROUP BY t1.customer_id ; -------------------------------------------------------------------

すると、全ての回答が全文表示されます。
noname#119059
noname#119059
回答No.1

相関副問合せという技を使ってみます。 ---------------------------- select customer_id,sum(amount) from table2 where exists ( select * from table1 where table1.customer_id = table2.customer_id and table2.executedate between table1.fromdate and table1.todate ) group by customer_id ------------------------ データ量によっては遅いかも? 当方mysql4では動作確認済みです。

すると、全ての回答が全文表示されます。

専門家に質問してみよう