始めましてアクセス・データベース初心者です。
簡単な質問でしたら申し訳ございませんが
出来る限り分かり易く解答して頂けますと嬉しく思います。
テーブルの中に同じ値のフィールドを持つレコードがあり、
その同一フィールドでまとめて表示したいと思いますが
どのようにすればよいか分かりません。
下記に例を表示致しますのでご参考にして頂ければと思います。
ID 品番 金額
111 AAA 1000円
111 BBB 150円
222 ZZZ 300円
このようなデータを下のようなデータに直したいです。
ID 品番1 金額1 品番2 金額2 品番3 ・・・
111 AAA 1000円 BBBB 150円 ・・・
222 ZZZ 300円
見にくいと思いますので例の画像も添付させて頂きます。
整理後のフィールドは品番1~品番6・金額1~金額6まで作る予定です。
品番や金額の種類は多数あります。
クロス集計クエリでするのかユニオンクエリというのを使うのかといところまでは調べたのですが、両方イマイチよく分かりません。
かなり困っていますのでどうかお助け下さいませ(泣)。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
クロス集計での一例ですが
ID 品番 金額
111 AAA 1000円
111 BBB 150円
222 ZZZ 300円
上記のテーブル名を「TB」、「ID」は数値型、「品番」はテキスト型と仮定します。
また、同一ID内で品番は重複しないものと仮定します。
テーブル「TB」をチョッと加工していきます。
重複した ID=111 の場合、レコード毎に横に表示していきたいので、
その「ID」の中で自分は何番目・・・を追加しておきます。
その順番のフィールド名を「C」と仮定すると、
C ID 品番 金額
1 111 AAA 1000円
2 111 BBB 150円
1 222 ZZZ 300円
になるようにします。
この状態にするには、クエリのSQLビューで、
SELECT DCount("*","TB","ID = " & ID & " AND 品番 <= '" & 品番 & "'") AS C, *
FROM TB;
(今回何番目は、品番の昇順でみてます)
この「C」の値で、横に表示していきます。
また、横に表示する際、解釈するフィールドは基本1つです。
「品番」「金額」の2つを表示させたいので、細工をします。
上記テーブルの各レコードを倍にし、その時に番号を振っておきます。
番号のフィールドを「N」と仮定します。
N C ID 品番 金額
1 1 111 AAA 1000円
2 1 111 AAA 1000円
1 2 111 BBB 150円
2 2 111 BBB 150円
1 1 222 ZZZ 300円
2 1 222 ZZZ 300円
この番号を振りながら各レコードを倍にするには、
フィールド「N」(数値型)だけのテーブル「T_NO」を新設し、1 と 2 だけを登録しておきます。
前述のクエリのもの(以下 Q1 と記述)と、T_NO を直積させます。
SELECT * FROM T_NO, Q1
これで、加工した上記テーブルが出来上がります。
この「N」を何に使うかですが、
N=1 の時には、「品番」を扱いましょう
N=2 の時には、「金額」を扱いましょう
という具合です。
準備が出来たので、このテーブルを使ってクロス集計していきます。
上記テーブルを作りながら、クロス集計する記述は以下
(クエリの記述はこれだけで:上記説明用に記述したものも含まれています)
TRANSFORM First(Choose(N,品番,金額)) AS 値
SELECT ID
FROM T_NO,
(SELECT DCount("*","TB","ID = " & ID & " AND 品番 <= '" & 品番 & "'") AS C, * FROM TB) AS Q1
GROUP BY ID
PIVOT "NO" & C & Choose(N,"_品番","金額");
で、表示結果は
ID NO1_品番 NO1金額 NO2_品番 NO2金額
111 AAA 1000円 BBB 150円
222 ZZZ 300円
のようになります。
PIVOT 部分は、列名を作るところですが、
PIVOT Choose(N,"品番","金額") & C
の様にすると、
ご希望の「品番1」「金額1」のような「列名」になりますが、並び順に難あり。
作られた「列名」が文字列なら、文字列として比較並び替えられます。
サンプル上では、「金額1」「金額2」「品番1」「品番2」の順になります。
クエリをデザインビューにして、「クエリ列見出し」を設定することで、
並びを固定することができます。
以下は、「クエリ列見出し」を使わないでどうにか・・・っていう細工になります。
レコード毎に「品番」「金額」の並びになってもらいたいので、
番号は先頭に付ければ・・・数字で始まるのはヤダから "NO" を付けて・・・
PIVOT "NO" & C & Choose(N,"品番","金額")
レコード毎になったのは良いけど、「品番」「金額」の順が逆・・・
じゃ、"品番" の前にだけ "_" を付けますか・・・
PIVOT "NO" & C & Choose(N,"_品番","金額")
"NO" & C
の部分は今回 1 ~ 6 という事なので、そのままで良いと思いますが、
C が 2 桁とかの場合は、C を Format(C,"00") とかにしないと・・・
「NO1」「NO2」があって「NO11」もあると
「NO1」「NO11」「NO2」の順になるとおもいます・・・・
参考にする/しない等、自己責任でお願いします。
以下のような方法もあるようです
http://detail.chiebukuro.yahoo.co.jp/qa/question …
お礼を申し上げるのが遅くなってしまいまして申し訳ございませんでした。
超多忙につき中々アクセスに手がつかず困っております。
大変親切にご回答頂きまして誠にありがとうございました。
今の仕事が一段落した段階でもう一度トライしてみたいと思います。
No.1
- 回答日時:
テーブルの名前をテーブル10とします。
実際に合わせて変更してください。
クエリを三つ作ります。名前はそれぞれQ1、Q2、Q3
とします。
Q1:テーブル10_1 は テーブル10 を二つデザインビュー
で表示させて状態で、一方の名前になります。
SELECT テーブル10.ID, テーブル10.品番, テーブル10.金額, Count(*) AS 番号
FROM テーブル10 INNER JOIN テーブル10 AS テーブル10_1 ON テーブル10.ID = テーブル10_1.ID
WHERE ((([テーブル10].[金額] & [テーブル10].[品番])>=[テーブル10_1].[金額] & [テーブル10_1].[品番]))
GROUP BY テーブル10.ID, テーブル10.品番, テーブル10.金額;
Q2:
SELECT 番号, ID, '品番' AS フィールド, 品番 AS 値 FROM Q1
UNION ALL SELECT 番号, ID, '金額' AS フィールド, 金額 AS 値 FROM Q1;
Q3:
TRANSFORM First(Q2.値) AS 値のカウント
SELECT Q2.ID
FROM Q2
GROUP BY Q2.ID
PIVOT [フィールド] & [番号];
Q3をクリックするとデータが表示されますが、
並びは、品番1、品番2、品番3、・・・、金額1、金額2、金額3・・・
のようになります。データを表示させて並び替えてください。
お礼を申し上げるのが遅くなってしまいまして申し訳ございませんでした。
超多忙につき中々アクセスに手がつかず困っております。
大変親切にご回答頂きまして誠にありがとうございました。
今の仕事が一段落した段階でもう一度トライしてみたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- Excel(エクセル) 【エクセル関数】複数条件に該当する場合、別の列の数値を合算する。 9 2022/07/09 08:46
- 格安スマホ・SIMフリースマホ 今 ahamoを使っていて 4898円以下になる携帯会社があれば乗り換えたいです 20GBと24時間 9 2022/09/27 07:43
- その他(データベース) accessでの請求管理について 2 2022/06/13 21:51
- スーパー・コンビニ ずっと前の出来事なのですが、相談させて下さい。 ある日コンビニにいって商品を3つ購入しました。レジに 2 2022/04/24 11:11
- クレジットカード 楽天カードのサポートが不便なのは何故? 1 2023/02/20 11:03
- 交際費・娯楽費 年収520万円一人暮らしの貯金 7 2022/09/26 07:10
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessでvlookupみたいなことは...
-
ツリー構造をRDBで表現するには?
-
Accessレコードの追加や変更が...
-
Accessでテーブルからテーブル...
-
access テーブル内のレコード...
-
フォームの計算がテーブルに反...
-
ACCESSで指定されたテーブルか...
-
SQLで日付を条件に削除したい
-
リンクテーブルを CopyObject ...
-
複数フィールドからの最新抽出...
-
本テーブルに変更内容を反映す...
-
SQLで条件指定結合をしたいがNU...
-
ACCESSのSQLで数値型に変換する...
-
SQL: SELECT UNIONすると文字数...
-
時間の足し算
-
ACCESSに同時アクセス(編集)を...
-
Accessクエリでの、LIKE条件
-
翌営業日までの日数をSQLで求め...
-
Accessレポートに非連結のパラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessでテーブルからテーブル...
-
SQLで日付を条件に削除したい
-
access テーブル内のレコード...
-
Accessクエリでの、LIKE条件
-
Accessの追加クエリで既存のテ...
-
Accessレコードの追加や変更が...
-
Accessでvlookupみたいなことは...
-
ACCESSで指定されたテーブルか...
-
ACCESSに同時アクセス(編集)を...
-
3つの表を1つに縦に連結する
-
SQLで条件指定結合をしたいがNU...
-
2つのテーブルを比較して一致し...
-
リンクテーブルを CopyObject ...
-
ツリー構造をRDBで表現するには?
-
パススルークエリをテーブル作...
-
翌営業日までの日数をSQLで求め...
-
デザインビューで、連結式 を...
-
時間の足し算
-
INSERT時にデータ登録とmaxの発...
おすすめ情報