- 締切済み
アクセスでこんなふうにできますか?
あるテーブルAがあるとします。そこには店舗ごとに納入している商品名が色ごとにコード分けされているもの(AA、AB、AC・・・)が入力されているのですが、各店舗商品一個につき一つの行を使っています。同じ商品があれば同じ商品コードが2行出てくる内容です。 (例) 店舗コード ,商品コード 0123 AA 0123 AA 0123 AC 0456 AC 0456 AB このテーブルを、店舗コードをひとまとめにして、商品コードを下記のようにしたいのです 店舗コード ,商品コード 0123 AA2,AC1 0456 AB1,AC1 これってクエリとかで出来るんですか?普通に集計クエリを使っても商品コードの種類が違うのでうまくできません。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
なかなか難しいですね。3つのクエリーでやってみました。 以下をクエリのSQLビューでコピペしてください。「テーブル名」のところは実際にお使いのものに変えてください。 SELECT テーブル名.店舗コード, テーブル名.商品コード, Count(テーブル名.商品コード) AS カウント, [商品コード] & [カウント] AS 商品コードn FROM テーブル名 GROUP BY テーブル名.店舗コード, テーブル名.商品コード; これを「Q_商品コードn」という名前で保存します。 次に以下を「Q_商品コードnクロス」という名前で保存します。 TRANSFORM First(Q_商品コードn.商品コードn) AS 商品コードnの先頭 SELECT Q_商品コードn.店舗コード FROM Q_商品コードn GROUP BY Q_商品コードn.店舗コード PIVOT "商品コード" & DCount("[商品コードn]","[Q_商品コードn]","[店舗コード]='" & [店舗コード] & "' AND [商品コードn]<='" & [商品コードn] & "'") In ("商品コード1" ,"商品コード2" ,"商品コード3" ,"商品コード4" ); 最後に以下をSQLビューでコピペして、データシートビューにするとご所望のリストが出力されます。 SELECT Q_商品コードnクロス.店舗コード,[商品コード1] & IIf([商品コード2] Is Not Null,"," & [商品コード2],"") & IIf([商品コード3] Is Not Null,"," & [商品コード3],"") & IIf([商品コード4] Is Not Null,"," & [商品コード4],"") AS 商品コード FROM Q_商品コードnクロス; 商品コードの組み合わせは4パターンまで対応しています。それ以上に増えた場合にどこを修正すればよいかは…大体判りますよね?
No.2の続きです。 ごめんなさい。ひとつ聞き忘れました。 (3) 1店舗につき、商品コードは最大何個、横に並ぶのでしょうか?
(1) AA2の「2」は、AAが「2」個という意味ですか? (2) 出力結果の 店舗コード ,商品コード 0123 AA2,AC1 で、AA2とAC1との間にコンマがありますが、AA2とAC1は別フィールドに並べて表示しても構わないのでしょうか?
補足
「2」は2個の「2」ですので7個なら「7」なります。 AA2とAC1はひとつに並べたいのです。
- bin-chan
- ベストアンサー率33% (1403/4213)
クエリに「クロス集計」ってあるでしょ? あれを使うと以下のような感じでできます。 店舗コード AA AB AC 0123 2 1 0456 1 1 「行見出し」に店舗コード 「列見出し」に商品コード あとはカウントを指定してください。
補足
商品コードをAA2,AC1とかAB1,AC1で一つにしたかったんです。
補足
商品コードの組み合わせは今はAA,AB,ACの3パターンで、後につく数字が増えていくと言う形です。