- ベストアンサー
締切日に在籍している社員数を社別に計算したい。
アクセスXPを使って、集計を行いたいです教えて下さい。 開始日から締切日までの社員数を社別で、月単位に計算したいです、宜しくご伝授ください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>在職日数はでますが、ここから退職者を引いて在職者だけの人数を・・ 在職日数を求める記述から締日までの人数を求めるのでしょうか? >社名、開始日、締日、退職日、名前・・・・・となって居り、社によって締切日が違います >退職者を引いて在職者だけの人数を月々単位で計算したい 会社・開始日・締日でグループ化し退職日に値がない社員を抽出し氏名をカウントすれば出来ますが・・ SELECT テーブル.社名, テーブル.開始日, テーブル.締日, Count(テーブル.名前) AS 社員数のカウント FROM テーブル WHERE (((テーブル.退職日) Is Null)) GROUP BY テーブル.社名, テーブル.開始日, テーブル.締日; これで出来ますが「月々単位で・・」というのがイマイチ不明です。一ヶ月の月単位をどこで抽出するのか? 締日とは会社の締切日なのでしょうか?会社の締切日とすると上記のSQLで行けますが締日が会社の締切日ではなく社員の稼動終了日という事なのでしょうか? 開始日から締日の間の会社の締切日という意味なのでしょうか?これだとHAVING句に開始日と締日が指定した月単位内であるかの抽出条件を付け加えればできます。
その他の回答 (2)
- O_cyan
- ベストアンサー率59% (745/1260)
どのようなテーブル構成になっているか不明ですが・・。 >開始日から締切日までの社員数を社別で フィールドが社員CD・業務開始日・業務終了日・会社CDとして クエリを作り業務開始日が締切日と同じか小さい日付でかつ業務終了日が開始日と同じか大きい日付のレコードを抽出します。 これで開始日から締切日にいる社員を抽出し会社CDでグループ化し社員CDをカウントすれば社員数が会社別に集計できます。 >月単位に計算したいです 開始日から締切日を2006/01/01~2006/01/31のように月単位にすれば良いのでは。 詳細が分からないのでこのくらいしか回答できません。
補足
フィールドが、社名、開始日、締日、退職日、名前・・・・・となって居り、社によって締切日が違います、したがって月々により退職とかあり社員数が違います、それの集計を考えています。在職日数: DateDiff("yyyy",[開始日],IIf([締日] Is Null,Now(),[締日]))+(Format([開始日],"mmdd")>Format(IIf([締日] Is Null,Now(),[締日]),"mmdd")) & "年" & DateDiff("m",[開始日],IIf([締日] Is Null,Now(),[締日))-(DateDiff("yyyy",[開始日],IIf([締日] Is Null,Now(),[締日]))+(Format([開始日],"mmdd")>Format(IIf([締日] Is Null,Now(),[締日]),"mmdd")))*12+(Day([開始日])>Day(IIf([締日] Is Null,Now(),[締日]))) & "ケ月" & DateDiff("d",DateSerial(Year(IIf([締日] Is Null,Now(),[締日])),Month(IIf([締日] Is Null,Now(),[締日]))+(Day([開始日])>Day(IIf([締日] Is Null,Now(),[締日]))),Day([開始日])),IIf([締日] Is Null,Now(),[締日])) & "日"・・在職日数はでますが、ここから退職者を引いて在職者だけの人数を月々単位で計算したいと考えています。そのやり方が解りません。
- DocumentServer21
- ベストアンサー率33% (16/48)
当方Access97なので、もっと賢いやり方があるかも知れませんが・・・ テーブル構造が分からないので、以下と仮定してます テーブル名:社員マスタ 氏名 会社名 入社日 安藤 グループA 2005/4/1 伊藤 グループA 2005/4/1 内田 グループA 2005/4/1 江頭 グループA 2005/5/1 織田 グループA 2005/5/1 加藤 グループB 2005/4/1 木村 グループB 2005/4/1 クエリーに以下のSelect文を記述すると抽出できます SELECT 社員マスタ.会社名, Month([社員マスタ]![入社日]) AS 入社月, Count(社員マスタ.氏名) AS 氏名のカウント FROM 社員マスタ WHERE (((社員マスタ.入社日)>=#5/1/2005# And (社員マスタ.入社日)<=#5/30/2005#)) GROUP BY 社員マスタ.会社名, Month([社員マスタ]![入社日]);
お礼
貴殿が言われる通り出来ました、有難うございました。
補足
有難うございます、早速貴殿が言われる通り実施して見たいと思います、月々単位とは、各会社単位の締日で区切り4月?人、5月?人と言う形で出したいです。