
長文となってしまい大変申し訳ございませんが、ご一読のうえご回答お願いいたします。
以下のテーブルがあります。
〇社員システム利用テーブル
ID 短いテキスト
社員名 短いテキスト
更新予定日1 短いテキスト
更新予定日2 短いテキスト
更新予定日3 短いテキスト
更新予定日4 短いテキスト
更新予定日5 短いテキスト
上記テーブルの更新予定日1~更新予定日5
を比較し、各社員の「最新更新予定日」を取得するクエリを作成したのですが
上手くできません。
★最新更新予定日
★更新予定日1~更新予定日5の日付の中でシステム日付を超えかつシステム日付に一番近い日付
(例)レコード1 データ内容
■システム日付:2021/9/2の場合
ID 001
社員名 鈴木 一
更新予定日1 2021/08/15
更新予定日2 空白
更新予定日3 2021/09/15
更新予定日4 2021/09/30
更新予定日5 空白
★最新更新予定日 2021/09/15 を取得したい
■システム日付:2021/9/19の場合
ID 001
社員名 鈴木 一
更新予定日1 2021/08/15
更新予定日2 空白
更新予定日3 2021/09/15
更新予定日4 2021/09/30
更新予定日5 空白
★最新更新予定日 2021/09/30 を取得したい
色々調べ、複数列の最大値を取得するSQLがあったので、それを基に色々試してみましたが、うまくできませんでした。
■最新更新予定日取得クエリ 作成したSQL
SELECT社員システム利用テーブル.ID,社員システム利用テーブル.社員名,社員システム利用テーブル.更新予定日1,社員システム利用テーブル.更新予定日2,社員システム利用テーブル.更新予定日3,社員システム利用テーブル.更新予定日4,社員システム利用テーブル.更新予定日5,
(SELECT Max([最新更新予定日]) FROM
(SELECT ID,更新予定日1 AS 最新更新予定日 FROM 社員システム利用テーブル AS x
UNION SELECT ID,更新予定日2FROM 社員システム利用テーブル AS x
UNION SELECT ID,更新予定日3FROM 社員システム利用テーブル AS x
UNION SELECT ID,更新予定日4FROM 社員システム利用テーブル AS x
UNION SELECT ID,更新予定日5FROM 社員システム利用テーブル AS x)
WHERE x.ID = システム利用テーブル.ID) AS 最新更新予定日
FROM 社員システム利用テーブル;
↑
Max関数を使用しているので、これでレコード1の最新更新予定日を
取得するとシステム日付関係なく「2021/09/30」となる。(当たり前ですね)
【補足】
・別にUNIONを使用しなくても良いのですが、わかりやすかったので、上記SQLを参考に試してみました。他の方法でもOKです。
・このクエリで所得した最新更新予定日を他の処理で使用したいため、このクエリで最新更新予定日を取得することは可能でしょうか。
ご回答よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんな感じ。
フィールド名の全角数字は半角にしてあります。
(全角数字のフィールド名はトラブルの元です。可能なら避けましょう。)
短いテキスト型の日付では、場合によっては抽出がうまくいかない可能性があります。
これも可能なら 日付型にした方が宜しいかと思います。
SELECT 社員システム利用テーブル.*, T.最新更新予定日
FROM 社員システム利用テーブル
LEFT JOIN
(SELECT UQ.ID, Min(UQ.最新更新予定日) AS 最新更新予定日 FROM
(SELECT ID,更新予定日1 AS 最新更新予定日 FROM 社員システム利用テーブル
UNION SELECT ID,更新予定日2 FROM 社員システム利用テーブル
UNION SELECT ID,更新予定日3 FROM 社員システム利用テーブル
UNION SELECT ID,更新予定日4 FROM 社員システム利用テーブル
UNION SELECT ID,更新予定日5 FROM 社員システム利用テーブル
) AS UQ
WHERE UQ.最新更新予定日>Date()
GROUP BY UQ.ID
) AS T
ON 社員システム利用テーブル.ID = T.ID;
ご回答ありがとうございます。
上記SQLでうまくできました。ありがとうございます。
テーブルの設定についてご指摘ありがとうございます。他の処理も関連するので、色々調整を行いながら対応したいと思います。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ACCESSで2つフィールドの日付を比較して新しい日付を表示するには。
Access(アクセス)
-
ACCESS 複数テーブル・複数フィールドを参照する不一致クエリ
Access(アクセス)
-
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
-
4
Accessでフィールドを比較したいのですが
その他(データベース)
-
5
Access 複数フィールドの一致
その他(Microsoft Office)
-
6
Access 各レコードの中での最大フィールドを抽出したい
Access(アクセス)
-
7
ACCESSで2つのテーブル比較で一致データのみ抽出したい
その他(データベース)
-
8
アクセス・クエリの抽出条件(翌日以降)
Access(アクセス)
-
9
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
10
Accessで、1つの項目に複数の置換えを1度でするには?
Access(アクセス)
-
11
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
12
Access]2つのテーブルを比較してフィールドの一部が一致したデータを抽出
Access(アクセス)
-
13
VBでSQL文のUPDATE構文を使った時のエラーについて
Visual Basic(VBA)
-
14
フィールド数の多すぎる・フィールド数が一定でないテーブルのデータ結合の仕方?
Access(アクセス)
-
15
Access マクロビルダーで使うIF文について
Excel(エクセル)
-
16
ラベルとテキストボックスのグループ化を解除したい
Access(アクセス)
-
17
Accessで日付の比較がうまくいかない
その他(データベース)
-
18
同一テーブル内での比較(最新データによる比較)
MySQL
-
19
Accessレポートのチェックボックスを大きくする方法
Access(アクセス)
-
20
AccessのWHERE句において、変数は使用できますか?
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
ACCESSユニオンクエリから新テ...
-
クエリで編集できるようにした...
-
アクセスで月単位の抽出
-
ログイン画面後のページの表取...
-
PCゲームから音声ファイルを抽...
-
年度ごとの最大値
-
Excleピボットでデータのない部...
-
アクセスのクエリー作成
-
アクセス クエリのフィールド...
-
ファイルメーカーのCase関数で
-
Accessで進行状況インジケータ...
-
アクセス レポート テキスト...
-
「年」と「月」だけの日付の表...
-
Accessで「式で型が一致しません...
-
access レポートで表示されな...
-
Accessを開きなおすとテキスト...
-
奇数・偶数ページごとに差し込...
-
ACCESSでフィールド名の変更(...
-
access 文字列で範囲指定する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
Accessのテーブルで、リンク?...
-
テーブルに表示されているもの...
-
Accessのリンクされたテーブル...
-
最新日のデータのみ抽出するク...
-
ACCESSユニオンクエリから新テ...
-
access vbaにてテンポラリーテ...
-
Acccessで2つのテーブルから1...
-
Accessでリストの並び順を変更...
-
アクセス2016 チェックボックス...
-
ACCESS テーブルを見比...
-
ACCESS テーブルを見比...
-
ACCESSでテーブルをコピーしよ...
-
AccessでのリンクテーブルとADO...
-
クエリで同一テーブルの複数回...
-
アクセス 部分一致の抽出
-
accessのテーブルを閉じたとき...
-
access2000・・テーブルをデー...
-
MDBファイルを比較するツール(...
-
ACCESSでABC判定をしたい
おすすめ情報