• 締切済み

SQLについて

SQL初心者です。ご質問させていただきます。 得意先マスタ(得意先CD、得意先分類CD、得意先名)←T [得意先分類CDは重複] 得意先分類マスタ(得意先分類CD、得意先分類名)←B 売上履歴(得意先CD、売上金額)←U というようなマスタが存在した場合に得意先分類CDで集計して、 (得意先分類CD、得意先分類名、売上金額)というようなデータを抽出したくて、下記のようなSQLを作成したのですが、うまくいきません。 SELECT U.得意先分類CD,B.得意先分類名,U.売上金額 FROM T,B,U WHERE T.得意先CD = U.得意先CD AND T.得意先分類CD = B.得意先分類CD GROUP BY B.得意先分類CD  よろしくお願いいたします。

みんなの回答

回答No.3

GROUP-BYに記述したフィールド以外は、SELECTするフィールドとして、集計関数を使わなければ記述できません。 こんな感じで、集計関数を使うことで、解決します。 SELECT max(U.得意先分類CD),max(B.得意先分類名),max(U.売上金額) FROM T,B,U WHERE T.得意先CD = U.得意先CD AND T.得意先分類CD = B.得意先分類CD  GROUP BY B.得意先分類CD; 実データが、得意先分類CDで集約することで、U.得意先分類CD,B.得意先分類名,U.売上金額が単一の値になるとしても、 オラクルは判りませんから、もし単一の値になるなら、GROUP-BYの集約キーに、加えてください。 例えば、こんな感じで。 SELECT U.得意先分類CD,B.得意先分類名,U.売上金額 FROM T,B,U WHERE T.得意先CD = U.得意先CD AND T.得意先分類CD = B.得意先分類CD  GROUP BY B.得意先分類CD,U.得意先分類CD,B.得意先分類名,U.売上金額;

すると、全ての回答が全文表示されます。
  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.2

GROUP BY B.得意先分類CD  としていますが、これは、select句にはありませんよね。 もう一度、基礎から勉強してください。 http://www.confrage.com/oracle/oracle_sql/dml/group_by/group_by.html

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

どううまくいかないのですか? SQLエラーなら、メッセージがでてるはずですので、そのエラーの内容を修正すればいいのではないですか。

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

関連するQ&A