• ベストアンサー

アクセスSQLについて教えてください

下記のようなデータがあります。 A子 abcde  B子 addd c子 abcde d子 adddd これを ABCDE 二人 addd 一人 adddd 一人 としたいです。 ただ、件数が多すぎるせいで、(50万件以上) クロス集計はできませんでした。 どなたかおしえてください。

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

1という数字が入ったフィールドを足してやって、集計クエリではいかがでしょうか。下記はお遊びですが、試されるときは、必ずバックアップを取ってから実行してください。元のテーブルを書き換えてしまいます。50万件でも動くかどうか定かではありませんので。 'テーブルの名前:テーブル1、abcde等の文字の入ったフィールド名:コードとしています。 'DAOに参照設定要 '☆標準モジュール Sub MyQueyCreate() Dim db As DAO.Database Dim qrdef As DAO.QueryDef Dim mySQL As String mySQL = "ALTER TABLE テーブル1 ADD COLUMN NUM INTEGER;" DoCmd.RunSQL mySQL mySQL = "UPDATE テーブル1 SET NUM = 1;" DoCmd.RunSQL mySQL Set db = CurrentDb mySQL = "SELECT テーブル1.コード, Sum(テーブル1.NUM) AS 件数 FROM テーブル1 GROUP BY テーブル1.コード;" Set qrdef = db.CreateQueryDef("Q_test", mySQL) db.Close Set db = Nothing End Sub

chelny
質問者

お礼

完璧な回答をありがとうございます! さっそくやってみたらすぐできました^^ なるほど。とっても便利なやり方を教えていただきました。 今後も活用できそうです! ありがとうございました。

関連するQ&A