重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

社員名簿のクエリの方法で悩んでいます。社員名簿のテーブルには「入社日」「退職日」と産前産後休暇や怪我等で長期休暇をとる従業員も少なくないものですので「長期休務開始日」「復職日」の4つの日付があります。

たとえば9月1日から9月30日に在籍していた社員をクエリで抽出するために
「入社日」の抽出条件に→ <=#2008/09/30#
「退職日」の抽出条件に→ >=#2008/09/01# Or Is Null
と入社退社に対しては分かるのですが、
「長期休務開始日」「復職日」をどうしたらいいか分かりません。(半日悩みました)
アクセスに詳しい方よろしくお願いします。
よろしくお願いします。

A 回答 (5件)

Nullがあることが問題を難しくしていますね


NullをNz関数ではるか未来に送ってしまって考えると簡単になります
ということで下のようにしてみました
デザインビューで作るとどうなるかは下のテーブル名をそちらのものにかえて
SQLビューに張り付けてからデザインビューで見てください

SELECT imadai.社番, imadai.氏名, imadai.入社日, imadai.退職日, imadai.長期休務復職日, imadai.長期休務開始日, imadai.長期休務理由
FROM imadai
WHERE (imadai.入社日<=#9/30/2008# AND nz([imadai].[退職日],#12/31/2900#)>=#9/1/2008#)
AND
(nz([長期休務開始日],#12/31/2900#)>=#9/1/2008# or nz([長期休務復職日],#12/31/2900#)<=#9/30/2008#);
    • good
    • 0
この回答へのお礼

CHRONOS_0様

ありがとうございます。できました!
これまでクエリしか使用したことなくSQLビューで操作した経験はありません。これからは勉強して使用できるようになっていきたいと思います。

目からウロコでした。私の愚問に付き合っていただき本当に感謝しています。
ありがとうございました。

お礼日時:2008/09/21 08:42

>たびたびのご回答ありがとうございます。

ここへのアップの仕方がわかりませんでした。
mdbファイルを知らない人の間でやり取りするというのはかなり危険な行為です
ここではそのような行為は禁止されているようです
面倒でもテーブルのサンプルをテキストで作り
(Accessのテーブルをコピーしてメモ帳に張り付ければ簡単にできます)
ここにアップしてください

この回答への補足

CHRONOS_0様

すみません。掲示板にUPしたらスペースが無効になってしまいました。
下記に補足します。よろしくお願いします。

A 退職していません。復職日が2008/10/31、開始日が2008/08/01
C 退職日が2008/04/10
E 退職していません。復職日が2008/08/15、開始日が2008/03/31
F 退職していません。開始日が2008/03/31

補足日時:2008/09/20 18:42
    • good
    • 0
この回答へのお礼

CHRONOS_0様

アドバイスとご対応ありがとうございます。

まだ解決できなく業務のほうで不便を感じているところです。
よろしくお願いします。

社番氏名入社日 退職日 長期休務復職日 長期休務開始日 長期休務理由
1A2007/04/05 2008/10/31 2008/08/01 怪我
2B2007/11/01
3C2007/11/012008/04/10
5E1999/04/01 2008/08/15 2008/03/31 うつ病
6F2002/04/01 2008/07/31 産休

お礼日時:2008/09/20 18:34

たとえば9月1日から9月30日に在籍していた社員をクエリで抽出するために


「入社日」の抽出条件に→ <=#2008/09/30#
「退職日」の抽出条件に→ >=#2008/09/01# Or Is Null
「復職日」の抽出条件に→ <=#2008/09/30# Or Is Null
「長期休務開始日」の抽出条件に→ >=#2008/09/01# Or Is Null
これら4つの条件を全て満たすもののみ抽出すれば良いと思います。
    • good
    • 0

>下記URLにリンクを作成しましたのでよろしくお願いいたします。


ショートカットしか置いてないですよ
テーブルのサンプルをここにアップできませんか?
    • good
    • 0
この回答へのお礼

CHRONOS_0様

たびたびのご回答ありがとうございます。ここへのアップの仕方がわかりませんでした。

お礼日時:2008/09/15 08:29

>9月1日から9月30日に在籍していた社員


この期間の一部でも在籍していた人は在籍とするのなら
長期休業で除かれるのは
「長期休務開始日」<=#2008/9/1# AND「復職日」>#2008/9/30#
の人だけです
    • good
    • 0
この回答へのお礼

CHRONOS_0様

ありがとうございます。ですがやってみたのですが、できませんできませんでした。

お礼日時:2008/09/14 17:30

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!