質問: MicrosoftのAccessでデータベースを作成しているのですが、うまく作成できず困っています。 作成しようとしているのは人員テーブルです。 人員テーブルをこのような形で表現したいです。
回答: ご質問の内容から、人員テーブルはクエリでしか作成できません。 また、「空欄・外注」のレコードが2つありますが、これらを識別することができないため、例えば「部署1・外注」と「部署2・外注」のようにすみわけが必要でしょうね。さらに、最終的な行の並びを考慮して、社員と外注の値は「0_社員」と「1_外注」にします。 最初に、社員と外注の案件数を集計するSQL文を考えます。案件テーブルとメンバテーブルは内部結合をします。内部結合は以下記事を参考にしてください。 フィールドは、部署名、外注・社員、4~6月、7~9月、10~12月とし、部署名と外注・社員フィールドはグループ化、それ以外はカウントとします。集計については以下の記事を参考にしてください。 以上からSQL文は次のとおり。 SELECT [メンバテーブル].部署名, [メンバテーブル].外注・社員, Count(案件テーブル.[4-6月]) AS [4-6月のカウント], Count(案件テーブル.[7-9月]) AS [7-9月のカウント], Count(案件テーブル.[10-12月]) AS [10-12月のカウント] FROM メンバテーブル INNER JOIN 案件テーブル ON [メンバテーブル].名前 = 案件テーブル.名前 GROUP BY [メンバテーブル].部署名, [メンバテーブル].外注・社員; これにより、次のような結果が得られます。 部署名|外注・社員|4~6月|7~9月|10~12月 __________________________ 部署1|0_社員 | ○ | ○ | ○ 部署1|1_外注 | ○ | ○ | ○ 部署2|0_社員 | ○ | ○ | ○ 部署2|1_外注 | ○ | ○ | ○ __________________________ ※○は案件数 続いて、部署1と部署2の合計は以下のSQL文になります。 SELECT [メンバテーブル].部署名, "合計" AS 合計, Count(案件テーブル.[4-6月]) AS [4-6月のカウント], Count(案件テーブル.[7-9月]) AS [7-9月のカウント], Count(案件テーブル.[10-12月]) AS [10-12月のカウント] FROM メンバテーブル INNER JOIN 案件テーブル ON [メンバテーブル].名前 = 案件テーブル.名前 GROUP BY [メンバテーブル].部署名, "合計"; 部署名|合計|4~6月|7~9月|10~12月 __________________________ 部署1|合計 | ○ | ○ | ○ 部署2|合計 | ○ | ○ | ○ __________________________ 最後に、これら2つの、SQL文をユニオンクエリでくっつけます。この際に、2つ目のフィールドのASを「日程」に修正します。ユニオンクエリは以下記事を参照ください。 SELECT [メンバテーブル].部署名, "合計" AS 日程, Count(案件テーブル.[4-6月]) AS [4-6月のカウント], Count(案件テーブル.[7-9月]) AS [7-9月のカウント], Count(案件テーブル.[10-12月]) AS [10-12月のカウント] FROM メンバテーブル INNER JOIN 案件テーブル ON [メンバテーブル].名前 = 案件テーブル.名前 GROUP BY [メンバテーブル].部署名, "合計" UNION SELECT [メンバテーブル].部署名, [メンバテーブル].外注・社員, Count(案件テーブル.[4-6月]) AS [4-6月のカウント], Count(案件テーブル.[7-9月]) AS [7-9月のカウント], Count(案件テーブル.[10-12月]) AS [10-12月のカウント] FROM メンバテーブル INNER JOIN 案件テーブル ON [メンバテーブル].名前 = 案件テーブル.名前 GROUP BY [メンバテーブル].部署名, [メンバテーブル].外注・社員; ※クエリウィザードでテーブルを追加せず、SQLビューに切り替えて、上記ユニオンクエリのSQLを記載すればOK。 以上で 部署名|日程 |4~6月|7~9月|10~12月 __________________________ 部署1|0_社員 | ○ | ○ | ○ 部署1|1_外注 | ○ | ○ | ○ 部署1|合計 | ○ | ○ | ○ 部署2|0_社員 | ○ | ○ | ○ 部署2|1_外注 | ○ | ○ | ○ 部署2|合計 | ○ | ○ | ○ __________________________ が完成します。 当方、サンプルデータを作って試してみましたら、上手く動きましたので、参考にしてみてください。