- ベストアンサー
アクセスSQLについて教えてください
下記のようなデータがあります。 A子 abcde B子 addd c子 abcde d子 adddd これを ABCDE 二人 addd 一人 adddd 一人 としたいです。 ただ、件数が多すぎるせいで、(50万件以上) クロス集計はできませんでした。 どなたかおしえてください。
- みんなの回答 (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
お礼
完璧な回答をありがとうございます! さっそくやってみたらすぐできました^^ なるほど。とっても便利なやり方を教えていただきました。 今後も活用できそうです! ありがとうございました。