• 締切済み

ひとつのクエリで結果を出せる?

お世話になります。 Access2010 以下のテーブルがあります。 支社テーブル 支社名    都道府県  電話番号 支社A     東京都  03-xxxx-xxxx 支社B     大阪府  06-xxxx-xxxx 支社C     神奈川県 045-xxx-xxxx 売上テーブル 支社名 売上額 A    100円 B    500円 A    200円 A    300円 C    100円 B    600円 上記2つのテーブルを使って以下の結果を【ひとつのクエリ】で表示 させたいのですが可能でしょうか。 支社名 売上額 都道府県 電話番号 A    100円 東京都  03-xxxx-xxxx B    500円 大阪府  06-xxxx-xxxx A    200円 東京都  03-xxxx-xxxx A    300円 東京都  03-xxxx-xxxx C    100円 神奈川県 045-xxx-xxxx B    600円 大阪府  06-xxxx-xxxx 要するに、売上テーブルの支社名は略称で記載されているので、 支社テーブルの支社名を略称に変換した上で、紐づけを行う必要が あります。 支社テーブルでSwitchを用いて支社AをA、支社BをB、支社CをCに 置き換えるクエリを作成し、それと売上テーブルを紐づければ 結果を得ることはできるのですが、今回はひとつのクエリで 行いたいところです。 ご教示の程、宜しくお願い致します。

みんなの回答

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

VBAで関数を作成。 例えば モジュールconv(X as sring) Dim res as string select X case "支社A" res= "A" case "支社B" res= "B" select 支社A ・ case else res= "" end select モジュールconv = res end function SQL select [支社テーブル]![都道府県], [支社テーブル]![電話番号],[支社テーブル]![支社名] from 支社テーブル INNER JOIN 売上テーブル on モジュールconv ([支社テーブル]![支社名]) = 売上テーブル![支社名] 調整は必要です自分でお願いします。 もっと簡単なのは変換テーブルを作成してそれをJOINすればよい。上はそれが出来ない場合。

naoto0216
質問者

お礼

失礼しました。こっちのSQLです。 SELECT 売上テーブル.支社名, 売上テーブル.売上額, Q.都道府県, Q.電話番号 FROM 売上テーブル INNER JOIN (SELECT Switch([支社名]='支社A','A',[支社名]='支社B','B',[支社名]='支社C','C') AS 略称, 支社テーブル.都道府県, 支社テーブル.電話番号 FROM 支社テーブル) AS Q ON 売上テーブル.支社名 = Q.略称 ORDER BY 売上テーブル.売上額 DESC;

naoto0216
質問者

補足

IDii24さま 早速のご回答ありがとうございます。 あくまでもクエリ(SQL)での方法を質問させて いただいております。 質問後、いろいろ試したところ、以下のSQLで いけることを確認しました。 SELECT 売上テーブル.委託業者名, 売上テーブル.売上額, Q.都道府県, Q.電話番号 FROM 売上テーブル INNER JOIN (SELECT Switch([支社名]='支社A','A',[支社名]='支社B','B',[支社名]='支社C','C') AS 略称, 支社テーブル.都道府県, 支社テーブル.電話番号 FROM 支社テーブル) AS Q ON 売上テーブル.委託業者名 = Q.略称 ORDER BY 売上テーブル.売上額 DESC; ありがとうござました。

関連するQ&A

  • クエリで

    アクセスのクエリに関する質問です 1 1週間ごとにクエリで先週の売り上げを別のテーブルに追加したいのですがどう設定すればいいのでしょうか 2 複数のテーブルから 例としてテーブルAから名前と売り上げ テーブルBから売り上げた日と個数をクエリを使ってひとつのテーブルにまとめることはできますか

  • アクセスのクエリ作成について

    下記のようなテーブルとフィールドがあるとします。 Aテーブル  会社名 分類 都道府県 住所 HPアドレス  Bテーブル  担当者 部署 電話 メールアドレス Cテーブル  受付番号 分類 Dテーブル  受付番号 分類 ここでAテーブルの都道府県で一致するデータを抽出し、 下記のフィールドを表示するクエリを作成したいと思っています。 A 会社名 分類 都道府県 住所 HPアドレス B 担当者 部署 メールアドレス 電話 C 受付番号 D 受付番号 クエリを作成し実行しましたが、何もデータが出てきません。 全フィールド入力していないと抽出できないのでしょうか。 中にはHPアドレス等がない場合もあるのです。 すみませんが、どなたか教えて下さい。 よろしくお願いします。

  • Access 集計クエリにて。

    地域計: DCount("市区町村","テーブル名") 今上記の状態で止まっています。 下記のようなテーブルがあるとします。 都道府県 市区町村 東京都  新宿区 東京都  豊島区 東京都  葛飾区 東京都  新宿区 東京都  新宿区 東京都  葛飾区 東京都  豊島区 東京都  豊島区 東京都  豊島区 この中で新宿区は何件、豊島区は何件、葛飾区は何件、と出したいです。 しかし、都道府県市区町村は変動します。 毎回変わるのです。 なので特定の文字列を検索するというよりは その時にそのテーブルに貼った市区町村別に何件ずつ入ってるか、を求めたいです。 地域計をだしたいのです。 只今集計クエリで○○: Sum(IIf([フィールド名]="○○",1,0)) で○○の件数は何件かを出しているのですが この○○はどの地域でも変わらないため、指定できるのですが 地域は変わってしまう為指定できません。 ○○の隣に地域計を出したいのですが どうすればいいでしょうか。

  • SQL文 抽出条件 複数の場合のやり方

    下記のような状況では どのようにSQL文を書けばよいのか教えてください。 例) テーブルA 氏名ID 住所 12345 東京都XXX区XXXX町1-1-1 12346 埼玉県XXX市XXXX町1-2-1 ・・・ テーブルB 住所(詳細に記載されているものもあれば、都道府県レベルのものもある) 東京都XXX区XXXX町 東京都▲▲区○○ 北海道 埼玉県◆◆市 ・・・ テーブルBに書いていある住所で始まる 全ての氏名IDを テーブルAから取り出したい。

  • アクセスクエリについて質問です。

    アクセスクエリについて質問です。 A列:得意先コード B列:売上額 でA列2行:A社大阪 B列2行:\10,000 A列3行:B社東京 B列3行:\20,000 A列4行:A社京都 B列4行:40,000 のテーブルがある時、クエリで A社 50,000 B社10,000 というデータを抜きたいのですがどうしたらいいのかがわかりません。A社の営業所単位での売上額を合計し、なおかつ 営業所名のないA社とする。簡単なようで難しく、困っています。どなたかわかる方いらっしゃいましたら、御教授お願いします。

  • Acccess クエリで演算結果を抽出条件に入れる事はできませんか?

    下記のような2つのテーブルを用意しています。 クエリにて、部数Aまたは、部数Bの数だけ、ループさせる方法をとりたいのです。 【テーブル】 T_会社 ---------------------------------- 会社名  部数A  部数B  住所 ---------------------------------- A社  3   20  東京都・・・ B社  2  10  埼玉県・・・ ---------------------------------- 【テーブル】 T_連番 ---------------------------------- 連番 ---------------------------------- 1 2 ・・・・ 100 ---------------------------------- 部数Aの場合は、うまくいっています。 【クエリ_部数A】 部数Aの数だけ、ループさせる SELECT T_会社.* FROM T_会社, T_連番 WHERE ((連番)<=[部数A]); ・・・抽出条件 ---------------------------------- 会社名  部数A  部数B 住所 ---------------------------------- A社  3 20 東京都・・・ A社  3 20 東京都・・・ A社  3 20 東京都・・・ B社  2 10 埼玉県・・・ B社  2 10 埼玉県・・・ ---------------------------------- しかし、部数Bの場合、この数字の「÷2」の値の数だけ、ループさせたいのですが、抽出条件に、演算結果(部数B計算)を入れると上手くいかないのです。 SELECT [部数B]/2 AS 部数B計算, T_会社.* FROM T_会社, T_連番 WHERE ((連番)<=[部数B計算]); ・・・抽出条件 ・・・ 部数B計算に対して、「パラメータの入力」ダイヤログが出て、表示できません。 クエリで演算結果を抽出条件に入れる事はできませんか? できるだけ、VBAを使用せずに処理を行いたいのです。 お分かりになる方がいらっしゃれば、アドバイスをお願い致します。 環境: WinXP 、Access 2003

  • [Access] 2つのテーブルを1つに集計したい

    アプリケーションのライセンス数のカウントをしています。 下記のように、既に購入済みアプリを場所毎にカウントしているテーブルAと、現在使用しているアプリ数を場所毎にカウントしているテーブルBがあります。 クエリ(でなくてもいいのですが)を使用して一番したの<最終的に欲しいクエリ>のような形にしたいのですが、どのようにしたらいいでしょうか。。 アドバイス宜しくお願いしますm(_ _)m <テーブルA> アプリ 場所 所持 ===================== A 東京 10 A 大阪 20 A 京都 8 B 東京 20 B 大阪 21 B 京都 18 C 東京 8 C 大阪 5 C 京都 10 <テーブルB> アプリ 場所 使用 ===================== A 東京 5 A 大阪 18 A 京都 7 B 東京 18 B 大阪 21 B 京都 15 C 東京 4 C 大阪 3 C 京都 9 <最終的に欲しいクエリ> アプリ 場所 所持 使用 ============================= A 東京 10 5 A 大阪 20 18 A 京都 8 7 B 東京 20 18 B 大阪 21 21 B 京都 18 15 C 東京 8 4 C 大阪 5 3 C 京都 10 9

  • アクセス テーブル、クエリーについて

     アクセスでソフト作成中です。そこで教えてほしいことがあります。 たとえば下記のように2つのテーブルがあります。 テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30          テーブル1の数値は固定します。そこで下記のようなクエリーを作成したいのです。 クエリー1 フィールドA フィールドB a1 10 b1 20 c1 30 テーブル2に数字を入れていくと テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30           40 クエリー1 フィールドA フィールドB a1 40 b1 20 c1 30 このように数字が上書きされていくようなクエリーは作成できないでしょうか。(あくまでテーブル1の数値は固定、フィールドAとフィールドBにリレーションシップは設定されていない。) よろしくおねがいします。

  • ACCESS 選択クエリの集計について

    そもそもテーブルの作り方が悪かったと言えるのですが、是非お知恵をお借りしたく投稿しました。 売上テーブル  売上ID 日付 得意先 売上A種テーブル 売上A種ID 売上IDNo 品目 数量 単価 合計  売上B種テーブル 売上B種ID 売上IDNo 品目 数量 単価 合計  売上C種テーブル 売上C種ID 売上IDNo 品目 数量 単価 合計  売上テーブルにメインの情報を入力し、売上A種テーブル、売上B種テーブル、売上C種テーブルに詳細情報を入力できるように売上IDと売上IDNoでリレーションシップを作成しました。 選択クエリでその日の各種の売上を集計したいのですが、必ずその日の得意先の売上の中に売上A種、売上B種、売上C種が含まれているわけではないので、選択クエリで 売上ID-グループ化 日付-グループ化 得意先-グループ化 売上A種合計-合計 売上B種合計-合計 売上C種合計-合計 とした場合、A種、B種、C種すべてに入力がなければ拾ってくれません。 入力の無いもの(売上IDNoのないもの)は0で、あるものはその合計を集計させるにはどのようにしたらよいでしょうか? 何卒、よろしくお願い申し上げます。

  • Accessクエリ

    Accessのクエリでお教えください。 次のようなテーブルデータがあったとき 会員tbl 都道府県、区分、氏名 東京    1   山田 東京    1   田中 東京    2   佐藤 大阪    1   伊藤 福岡    2   鈴木 都道府県別区分別の件数を出したいのですがどのようなクエリにしたらできるのでしょうか。 都道府県、区分、件数 東京    1   2 東京    2   1 大阪    1   1 大阪    2   0 福岡    1   0 福岡    2   1 SELECT 会員tbl.都道府県, 会員tbl.区分, Count(会員tbl.氏名) AS 氏名のカウント FROM 会員tbl GROUP BY 会員tbl.都道府県, 会員tbl.区分; デザインビューで設定したものをSQLビューで表示したものです。 これですと次のようになってしまいます。 都道府県、区分、件数 東京    1   2 東京    2   1 大阪    1   1 福岡    2   1 0件も表示したいのです。

専門家に質問してみよう