- 締切済み
Access クロス集計
業態_年度_分類_売上_社数 列を分類、売上を値(合計)、sum([売上]) (演算) 業態グループ化 行、社数グループ化 行 業態グループの分類の合計を出すために上のような クロス集計を行いました。 レポート 業態_20年売上_19年売上_18年売上_19年社数 レポートの表示を上のようにしたいのでさらに クロス集計をし年度を列、分類の合計を値、業態グループ としましたが、社数を表示ができません。 何か良い方法は無いでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- CHRONOS_0
- ベストアンサー率54% (457/838)
関数なんかでやるより 業態別に各年度の社数合計を出すクロス集計クエリを作り アップされた年度別輸出入売上のクロス集計クエリと 業態で結合するクエリを作ればいいんじゃないですか
レポート 業態_20年売上_19年売上_18年売上_19年社数 これ、意味が判りませんよ! ============================================================== 直接の答えじゃないですが・・・。 [イミディエイト] ? UpdateSQL("クエリ1", "SELECT * FROM tab1") True ? GetSQL("クエリ1") SELECT * FROM tab1; このように簡単にクエリを書き換えることが出来ます。 ID__業態__年度__売上 01__1_____2006___\26 02__1_____2007___\27 03__2_____2006__\126 04__2_____2007__\127 業態__2006年売上合計__2007年売上合計 1_________________26______________27 2________________126_____________127 SELECT 業態, DBSum("売上","tab1","年度=2006 AND 業態='1'") AS 2006年売上合計, DBSum("売上","tab1","年度=2007 AND 業態='1'") AS 2007年売上合計 FROM tab1 WHERE 業態='1' UNION SELECT 業態, DBSum("売上","tab1","年度=2006 AND 業態='2'") AS 2006年売上合計, DBSum("売上","tab1","年度=2007 AND 業態='2'") AS 2007年売上合計 FROM tab1 WHERE 業態='2'; 例えば、このようなSQL文を生成しクエリを更新すればクロス集計を自在に行うことも可能。 この程度のSQL文の生成ならば1時間程度の工数でしょう。 クロス集計に何時間も頭を悩ますよりも手っ取り早いと思いますよ。 (どうせ、レポートの年度数は定数内の筈でしょうから・・・) Public Function GetSQL(ByVal QueryName As String) As String Dim MyQuery As DAO.QueryDef Set MyQuery = CurrentDb.QueryDefs(QueryName) GetSQL = MyQuery.SQL End Function Public Function UpdateSQL(ByVal QueryName As String, ByVal SQLText As String) As Boolean On Error GoTo Err_UpdateSQL Dim isOK As Boolean Dim MyQuery As DAO.QueryDef isOK = True Set MyQuery = CurrentDb.QueryDefs(QueryName) MyQuery.SQL = SQLText Exit_UpdateSQL: UpdateSQL = isOK Exit Function Err_UpdateSQL: isOK = False Resume Exit_UpdateSQL End Function
お礼
クロス集計を社数用と売上用を用意すれば済む話でした。 回答ありがとうございました。
補足
テーブル: ttp://upload.jpn.ph/img/u15897.jpg クロス集計クエリ: TRANSFORM Sum(テストテーブル.売上) AS 売上の合計 SELECT テストテーブル.業態, テストテーブル.年度, Sum(テストテーブル.社数) AS 社数の合計, Sum(テストテーブル.売上) AS 輸入輸出合計 FROM テストテーブル GROUP BY テストテーブル.業態, テストテーブル.年度 PIVOT テストテーブル.項目; ttp://upload.jpn.ph/img/u15898.jpg 上のテーブルから下のクロス集計を作成しました。 これでグループ別の輸入輸出の合計が算出できます。 しかしレポートの形式を 業態別_20年輸出入売上合計_19年輸出入売上合計_18年輸出入売上合計_19年社数合計 としたいので、クロス集計で輸出入売上合計(業態別)の表示を直します。 ttp://upload.jpn.ph/img/u15899.jpg 19年度の社数を縦列で表示させたいのですが、 関数で解決できるのでしょうか?
補足
#1のお礼に書いたとおり 仰る内容で解決済みです。 締めるのが遅れていまい申し訳ありません。