投稿者 魔界の仮面弁士  (社会人) 投稿日時 2022/8/3 11:59:30
CREATE TABLE [テーブルA] ([ID] CHAR(3) PRIMARY KEY, [検査日1] DATE, [検査日2] DATE, [検査日3] DATE);

INSERT INTO [テーブルA] ([ID], [検査日1], [検査日2], [検査日3]) VALUES ( '001', #5/10/2021#, #12/20/2021#, #3/5/2022#);
INSERT INTO [テーブルA] ([ID], [検査日1], [検査日2], [検査日3]) VALUES ( '002', #6/13/2021#, #5/20/2022#, NULL);
INSERT INTO [テーブルA] ([ID], [検査日1], [検査日2], [検査日3]) VALUES ( '003', #1/30/2021#, #8/1/2022#, NULL);
INSERT INTO [テーブルA] ([ID], [検査日1], [検査日2], [検査日3]) VALUES ( '004', #8/5/2021#, NULL, NULL);
INSERT INTO [テーブルA] ([ID], [検査日1], [検査日2], [検査日3]) VALUES ( '005', #3/10/2021#, #11/1/2021#, #2/8/2022#);

---

PARAMETERS [スタート日付] DATE, [エンド日付] DATE;
SELECT [ID], [検査日1] AS [検査日], '検査日1' AS [列名] FROM [テーブルA] WHERE [検査日1] >= [スタート日付] AND [検査日1] <= [エンド日付]
UNION ALL
SELECT [ID], [検査日2] AS [検査日], '検査日2' AS [列名] FROM [テーブルA] WHERE [検査日2] >= [スタート日付] AND [検査日2] <= [エンド日付]
UNION ALL
SELECT [ID], [検査日3] AS [検査日], '検査日3' AS [列名] FROM [テーブルA] WHERE [検査日3] >= [スタート日付] AND [検査日3] <= [エンド日付]
ORDER BY 2, 1;



PARAMETERS 句を使ったクエリにするかどうかはお好みで。
https://docs.microsoft.com/ja-jp/office/client-developer/access/desktop-database-reference/parameters-declaration-microsoft-access-sql