• ベストアンサー

アクセスで同じ種類のものを横に並べたい

お世話になります。 アクセスでデータを取り込んだデータをエクセルで吐き出す為、横に並べたいと思っています。 種類 品物 a  aa-1 a  aa-3 a  aa-5 b  bb-3 c  cc-1 c  cc-2 上記のようなデータを 種類 品物1   品物2   品物3  a  aa-1    aa-3    aa-5  b  bb-3  c  cc-1    cc-2 というようにクロス集計をしたいと思っています 品物1 品物2 品物3にあたる列見出しをどのようにしたら良いか分かりません。 種類ごとにカウントでくる関数ってありますでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.1

>種類ごとにカウントでくる関数ってありますでしょうか? 関数はないと思いますが、クエリを工夫すればカウントは可能です。 SELECT X.種類, X.品物, '品物' & Count(N.種類) AS 列見出 FROM テーブル名 AS X INNER JOIN テーブル名 AS N ON (X.種類=N.種類) AND (X.品物>=N.品物) GROUP BY X.種類, X.品物; 又は、 SELECT X.種類, X.品物, '品物' & DCount("*","テーブル名","種類 ='" & X.種類 & "' AND 品物 <= '" & X.品物 & "'") AS 列見出 FROM テーブル名 AS X; どちらのクエリでも、同じ結果が出ます。 上記の方がパフォーマンスは良いと思います(しかし難解です)。 下記のクエリの方が分かり易いかも。 お好きな方を使ってください。 このクエリで、種類ごとのカウントをし、 ついでに"品物"という文字列をつけて、列見出用に使います。 このクエリを「集計準備」という名前で保存したとします。 次に、上記のクエリを元に、クロス集計をします。 TRANSFORM First(集計準備.品物) AS 品物の先頭 SELECT 集計準備.種類 FROM 集計準備 GROUP BY 集計準備.種類 PIVOT 集計準備.列見出; これで、ご希望の結果になると思います。 ただし、全く同じ種類、品物がある場合、 この方法では、うまく動きませんので、注意して下さい。 全く同じレコードが含まれている場合は、 オートナンバー等の主キーを追加し、 それを集計に利用する必要があると思います。 ----補足---- SQL文からクエリを作るには、 クエリの新規作成 → テーブルは追加しない 表示 → SQLビュー として、SQL文をコピー&ペーストして下さい。 テーブル名は正しいテーブル名に置き換えて下さい。

kapakapa
質問者

お礼

ご回答ありがとうございます。思い通りに出来ました。ありがとうございます。内容が難しかったですが、これから理解して勉強してみようと思います。

その他の回答 (1)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

並べる順番を決定できるフィールドがいるのですが 品物の文字コード順でよさそうですね クエリデザインビューで下のような式フィールドを作ります 列名:"品物" & DCount("*","テーブル名","種類='" & 種類 & "' and 品物<='" & 品物 & "'") このクエリをクロス集計クエリに変え 種類:行見出し 列名:列見出し 品物:値:先頭

kapakapa
質問者

お礼

ありがとうございます。いろいろな方法があって勉強になりました。 またよろしくお願いします。