• 締切済み

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  よろしくお願いいたします。

  • Oracle
  • 回答数3
  • ありがとう数0

みんなの回答

回答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

  • SQL文を教えて下さい

    VB2008、SQL Server で開発をしています。 下記の条件でデータを取得したいのですが、SQL文がうまくできず、困っています。 おわかりの方、教えてください。 仕様:得意先マスタ(得意先M)の全件と、売上テーブル(売上T)を読みます。     売上テーブルの商品コードの商品名を商品マスタ(商品M)より取得します。     得意先マスタの全得意先を取得する必要があります。     すべての得意先の売上データが存在するわけではありません。 ACCESS上でクエリを作成し、SQLビューにすると、こうなります。 inptSyoCD:画面から入力した商品コード 1,まず、クエリ1: SELECT 売上T.伝票日付, 売上T.伝票番号, 売上T.得意先コード, 売上T.明細区分, 売上T.商品コード, 商品M.商品名称 FROM 売上T LEFT JOIN 商品M 売上T.商品コード = 商品M.商品名 WHERE 売上T.明細区分=1 AND 売上T.商品コード= inptSyoCD ; 2,次に、実際に処理するSQL文: SELECT 得意先M.得意先コード, 得意先M.得意先名称,       クエリ1.伝票日付, クエリ1.伝票番号, クエリ1.明細区分, クエリ1.商品コード, クエリ1.商品名  FROM 得意先M LEFT JOIN クエリ1 ON 得意先M.得意先コード = クエリ1.得意先コード ORDER BY 得意先M.得意先コード,売上T.伝票日付,売上T.商品コード; この2つをひとつのSQL文にする方法がわかりません。 よろしくお願いいたします。

  • UPDATE文

    また、投稿させていただきます。 言語 VB6.0 DB ORACLE9i 接続 oo4o 売上高のデータを更新したいんです。 DBは2つあります。変換マスタ、売上高 ○変換マスタのデータ 変換コード 得意先コード   得意先名  1      100      あああ  2      200      いいい  3      300      ううう っいう風にデータがあります。 ○売上高のデータ 変換売上コード 売上名  1       NULL  2       NULL  3       NULL  4       NULL ていう風にデータがあります。 ●更新後の売上高のデータ 変換売上コード 売上名 100      あああ 200      いいい 300      ううう  4       NULL 変換マスタの変換コードと売上高の変換売上コードが一緒なら変換マスタの得意先コードのデータを 売上高の変換売上コードを更新し、変換マスタの得意先名を売上高の売上名に更新したいんですが自分で書いたソースでは更新後の変換売上コードの「4」→「NULL」になって帰ってくるんです。変換マスタになかったらそのままのデータにしたいのですが、どうかお願いします。ソース乗せます。 W_SQL = "UPDATE " W_SQL = W_SQL & "売上高 " W_SQL = W_SQL & "SET ( " W_SQL = W_SQL & "売上高.変換売上コード,売上高.売上名) = " W_SQL = W_SQL & "( SELECT 得意先コード,得意先名" W_SQL = W_SQL & " FROM 変換マスタ WHERE 売上高.変換売上コード = 変換マスタ.変換コード)"

  • SQLの書き方について

    下記のSQL文に科目マスタから科目名を取得する文を追加したいと考えてます。 色々と考えてみたのですが、私のスキルでは上手く行かなくて困っています。 どなたか教えて頂けないでしょう? 宜しくお願いします。 DB:アクセス97・アクセス2000 科目マスタ 科目CD  科目名 SELECT U.商品CD, 商品マスタ.商品名, U.[部署CD], 部署マスタ.部署名, U.SUM受払数 FROM 部署マスタ INNER JOIN ((SELECT 商品CD,受払年月日,部署CD,SUM(受払数) as SUM受払数 FROM 受払TBL WHERE 受払年月日 = '20110510' GROUP BY 商品CD,部署CD,受払年月日,受払数) AS U INNER JOIN 商品マスタ ON U.商品CD = 商品マスタ.商品CD) ON 部署マスタ.部署CD = U.部署CD ORDER BY U.商品CD, U.[部署CD], U.受払年月日, U.[SUM受払数] 科目名を取得する文を追加後のSQL文 SELECT U.商品CD, 商品マスタ.商品名, U.部署CD, 部署マスタ.部署名, U.科目CD, 科目マスタ.科目名, U.SUM受払数 FROM 部署マスタ INNER JOIN ((SELECT 商品CD,受払年月日,部署CD,科目CD,SUM(受払数) as SUM受払数 FROM 受払TBL WHERE 受払年月日 = '20110510' GROUP BY 商品CD,部署CD,受払年月日,科目CD,受払数 ) AS U INNER JOIN 商品マスタ ON U.商品CD = 商品マスタ.商品CD INNER JOIN 科目マスタ ON U.科目CD = 科目マスタ.科目CD ) ON 部署マスタ.部署CD = U.部署CD ORDER BY U.商品CD, U.部署CD, U.受払年月日, U.科目CD, U.SUM受払数 上記のSQLを実行するとエラーになります。 SQL実行中に以下のエラーが発生しました。 エラーコード:-3100 [Microsoft][ODBC Microsoft Access Driver] クエリ式 'U.商品CD = 商品マスタ.商品CD INNER JOIN 科目マスタ ON U.科目CD = 科目マスタ.科目CD' の 構文エラー : 演算子がありません。 SQLステータス:37000 宜しくお願いします。

  • SQLでの集計結果取得について

    以下のようなSQLを書いたのですが,ほしい結果が得られませんでした。 受注に存在しない得意先についても得意先コードと得意先名を得たかったので、 "from 受注 Right Outer Join 得意先 On 受注.得意先コード = 得意先.得意先コード" としたのですが, 受注に存在しない得意先についてはデータが得られませんでした。さらに、Where句で、"受注.得意先コード =* 得意先.得意先コード"と書くとエラーが出てきてしまいました。 どうすれば得意先に存在する得意先すべての集計結果が得られるのでしょうか? String sql = "Select 得意先.得意先コード, Min(得意先.得意先名) " + "As 得意先名, Sum(受注.受注合計金額) " + "from 受注 Inner Join 得意先 " + "On 受注.得意先コード = 得意先.得意先コード " + "where 受注.得意先コード = 得意先.得意先コード " + "and 受注状態区分 = '" + joutaiKubun + "' " +      "and 納入日 between '" + startYMD + "' and '" +        "endYMD + "' " + "Group By 得意先.得意先コード " +      "Order By 得意先.得意先コード ";

    • ベストアンサー
    • Java
  • エクセルで得意先別前年対比を計算したいのですがどのようにすれば良いでしょうか?

    エクセルで得意先別前年対比を計算したいのですがどのようにすれば良いでしょうか? シート1に今年の1月度のデータと、昨年の1月度のデータが入っております。(明細単位のデータです) シート2でこのデータを集計して対比表を作成したいのですが、どのようにすればいいでしょうか? 尚、シート1及びシート2の主な項目は次の通りです。 項目名:[A]担当者CD [B]計上年月日(例:20080122) [C]得意先CD [D]得意先名 [E]売上金額(決定) [F]売上金額(概算) 最終的に作成したい資料のイメージとしましては、、、 担当者:東 京一郎 [A]得意先CD [B]得意先名 [C]売上金額計(今年度) [D]売上金額計(昨年度) [E]差± ・・・といった感じです。 注意点としましては、 (1)得意先CD:1002 A商店は、今年の売上は100万でしたが、昨年の売上はゼロ(データファイルにCD1002のデータは1件もなし)の場合や、   逆に、得意先CD:1008 B商事は、今年の売上はゼロで、昨年の売上は50万といった場合があります。 関数を調べてみたりと色々試してはみたのですが、私には知識不足でどうにもなりません。 助けてください。よろしくお願いします。

  • SQL2005 ストアドUPDATEについて教えてください。

    SQL2005 ストアドUPDATEについて教えてください。 顧客マスタと、売上データがあり、顧客毎の売上データの売上金額の合計を 顧客マスタの累計金額にUPDATEする方法を教えてください。 顧客マスタ・・顧客コード、累計金額 売上データ・・売上日、顧客コード、売上金額 update 顧客マスタ set 累計金額=(select sum(B.売上金額) from 売データ as B where 売上日付>='2010/03/01' and 売上日付<='2010/06/30' group by B.顧客コード) from 顧客マスタ as A,売上データ as B where A.顧客コード=B.顧客コード サブクエリは複数の値を返しました。サブクエリが =、!=、<、<=、>、>= の後に続く場合や のエラーが出たり、期間中のすべての顧客の売上合計がセットされたり思うようになりません。 どなたか教えてください。 宜しくお願いします。

  • SQLのエラーについて

    SQLの初心者です。 アクセス2000で下記のSQLを実行するとエラーになります。 SQLの書き方に問題が有るのでしょうか? どなたか教えて頂けたら幸いです。 宜しくお願いします。 エラーの内容 SQL実行中に以下のエラーが発生しました。 エラーコード:-3100 [Microsoft][ODBC Microsoft Access Driver] クエリ式 'U.商品CD=商品マスタ.商品CD INNER JOIN 部署マスタ ON U.部署CD=部署マスタ.部署CD' の 構文エラー : 演算子がありません。 SQLステータス:37000 SQLの内容 SELECT U.商品CD,商品マスタ.商品名,U.受払年月日,U.部署CD,部署マスタ.部署名, U.SUM受払数 AS 受払数 FROM [SELECT 商品CD,受払年月日,部署CD,SUM(受払数) as SUM受払数 FROM 受払TBL WHERE 受払年月日 = 20110513 GROUP BY 商品CD,部署CD,受払年月日,受払数] AS U INNER JOIN 商品マスタ ON U.商品CD=商品マスタ.商品CD INNER JOIN 部署マスタ ON U.部署CD=部署マスタ.部署CD ORDER BY 商品CD,部署CD,受払年月日,受払数

  • VIEWでテーブルの集計結果を表示したいです

    いつもお世話になっています。 下のテーブルデータから下記VIEW結果を表示する場合、 どのようなSQL文で出力が可能になるのでしょうか。 ※GROUP BY利用では集計値でない商品名、得意先名を出力できず困っています。 初心者的な質問で申し訳ありませんが、ご回答よろしくお願いします。 ○環境:Windows Server 2003、 SQLServer 2005 ------------------------------------------- 「売上明細テーブル」 商品CD 商品名 得意先CD 得意先名 価格 1 商品1 1001 得意先1 100 1 商品1 1001 得意先1 100 1 商品1 2002 得意先2 100 2 商品2 2002 得意先2 200 2 商品2 3003 得意先3 200 2 商品2 3003 得意先3 200 ------------------------------------------- 「VIEW結果」※価格は商品CD+得意先CDキーの合計値です。 商品CD 商品名 得意先CD 得意先名 価格(合計) 1 商品1 1001 得意先1 200 1 商品1 2002 得意先2 100 2 商品2 2002 得意先2 200 2 商品2 3003 得意先3 400

  • 集計についての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 を組み込んだりしてもうまくいきませんでした。 どなたかご指導下さい。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQLを教えて下さい

    SQL server 2008 R2 と VB2010 で開発を行っています。 いま、月別の合計金額を計算するSQLがわからなくて困っています。 【売上明細テーブル】 ・明細ID ・年月日 ・得意先ID ・売上金額 出力したい内容は以下のような月別売上合計の推移です。 具体的にはこんな感じです。 得意先ID 3月売上 4月売上 5月売上 --------------------------------------- 0001     1,111   2,222   3,333 0002     2,222   3,333   4,444 0003     5,555     0    6,666 得意先の中には売上の無い月もあります(0003の4月)が、 この場合も一覧に出したいと考えています。 1つのロウの中に異なる条件の値がある場合のSQLの組み立てがわかりません。 どうぞ宜しくお願いします。