- ベストアンサー
アクセスで同じ種類のものを横に並べたい
お世話になります。 アクセスでデータを取り込んだデータをエクセルで吐き出す為、横に並べたいと思っています。 種類 品物 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にあたる列見出しをどのようにしたら良いか分かりません。 種類ごとにカウントでくる関数ってありますでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>種類ごとにカウントでくる関数ってありますでしょうか? 関数はないと思いますが、クエリを工夫すればカウントは可能です。 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文をコピー&ペーストして下さい。 テーブル名は正しいテーブル名に置き換えて下さい。
その他の回答 (1)
- CHRONOS_0
- ベストアンサー率54% (457/838)
並べる順番を決定できるフィールドがいるのですが 品物の文字コード順でよさそうですね クエリデザインビューで下のような式フィールドを作ります 列名:"品物" & DCount("*","テーブル名","種類='" & 種類 & "' and 品物<='" & 品物 & "'") このクエリをクロス集計クエリに変え 種類:行見出し 列名:列見出し 品物:値:先頭
お礼
ありがとうございます。いろいろな方法があって勉強になりました。 またよろしくお願いします。
お礼
ご回答ありがとうございます。思い通りに出来ました。ありがとうございます。内容が難しかったですが、これから理解して勉強してみようと思います。