• 締切済み

アクセスでこんなふうにできますか?

あるテーブルAがあるとします。そこには店舗ごとに納入している商品名が色ごとにコード分けされているもの(AA、AB、AC・・・)が入力されているのですが、各店舗商品一個につき一つの行を使っています。同じ商品があれば同じ商品コードが2行出てくる内容です。 (例) 店舗コード   ,商品コード 0123       AA 0123       AA 0123       AC 0456       AC 0456       AB このテーブルを、店舗コードをひとまとめにして、商品コードを下記のようにしたいのです 店舗コード   ,商品コード 0123       AA2,AC1 0456       AB1,AC1 これってクエリとかで出来るんですか?普通に集計クエリを使っても商品コードの種類が違うのでうまくできません。

みんなの回答

noname#15567
noname#15567
回答No.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パターンまで対応しています。それ以上に増えた場合にどこを修正すればよいかは…大体判りますよね?

noname#15567
noname#15567
回答No.3

 No.2の続きです。  ごめんなさい。ひとつ聞き忘れました。 (3) 1店舗につき、商品コードは最大何個、横に並ぶのでしょうか?

micheemouse
質問者

補足

商品コードの組み合わせは今はAA,AB,ACの3パターンで、後につく数字が増えていくと言う形です。

noname#15567
noname#15567
回答No.2

(1) AA2の「2」は、AAが「2」個という意味ですか? (2) 出力結果の 店舗コード   ,商品コード 0123       AA2,AC1 で、AA2とAC1との間にコンマがありますが、AA2とAC1は別フィールドに並べて表示しても構わないのでしょうか?

micheemouse
質問者

補足

「2」は2個の「2」ですので7個なら「7」なります。 AA2とAC1はひとつに並べたいのです。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

クエリに「クロス集計」ってあるでしょ? あれを使うと以下のような感じでできます。 店舗コード AA AB AC 0123     2     1 0456        1  1 「行見出し」に店舗コード 「列見出し」に商品コード あとはカウントを指定してください。

micheemouse
質問者

補足

商品コードをAA2,AC1とかAB1,AC1で一つにしたかったんです。

関連するQ&A

専門家に質問してみよう