- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:WHERE句で抽出した後にグループ化した時の異常)
WHERE句で抽出した後にグループ化した時の異常
このQ&Aのポイント
- 複数のテーブルを結合してレコードを取得するシステムを作成しています。プロジェクトテーブルと発注テーブルをプロジェクトIDで結合し、WHERE句で条件を指定して絞り込みます。しかし、グループ化の際に最も遅い買掛日や最大の発注金額などが正しく表示されない問題が発生しています。
- 具体的な例として、A社の発注先で4月30日に発注した10万円の発注と、B社の発注先で7月30日に発注した20万円の発注があるプロジェクトが存在します。このプロジェクトを「発注先がB社で4月1日から5月30日までの間」という条件で検索すると、本来は表示されないはずですが、最も遅い買掛日が7月30日(B社の買掛日)、発注金額が10万円(A社の発注金額)で表示されてしまいます。
- この問題を解決するためには、グループ化の前にWHERE句の条件を絞り込み、結果を一時テーブルに格納する必要があります。そして、その一時テーブルを元にグループ化と集計を行い、最終的な結果を表示します。このようにすることで、正しい結果が表示されるようになります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>どうすればこれを修正することができるのでしょうか? 具体的なSQL文がわからないのでなんとも言えませんが おそらくGROUP BYで日付でMAXをとったままの式で金額を抽出しているのでは? MAXでとった日付をサブクエリとして利用しないと適正なあたいは得られませんね