我不太确定如何表达这个问题,因为在 Access 中可能无法做到这一点(以我有限的知识和对查询和表关系的广泛研究)。不幸的是,由于敏感数据,我无法显示屏幕截图,但我会尽力用字符来表达。
我正在尝试合并两个简单的查询,这些查询仅提取超出特定日期范围(逾期认证)的商家。商家可能会逾期进行扫描和 SAQ。我可以轻松地为每个查询创建两个单独的查询,但我想知道是否可以运行一个包含这两个查询的查询。
我所拥有的示例:
商家帐户 |数据库管理员姓名 | ECM 名称 | SAQ 截止日期
000000000000000....XXXX......... XXXX......... 10/10/2013
商家帐户 |数据库管理员姓名 | ECM 名称 |扫描截止日期
111111111111111111..ZZZZ.....ZZZZ.....1/12/2012
我通过在简单查询上设置 Between Date() 和 Date()-1000 标准参数来完成上述操作。我的目标是产生以下内容;
商家帐户 |数据库管理员姓名 | ECM 名称 |扫描截止日期 | SAQ 截止日期
111111111111111111..ZZZZ.....ZZZZ.....1/12/2012........... ..空/无数据
0000000000000000..XXXX........... XXXX......... 空/无数据.....10/10/2013年
老实说,导出两个查询并手动复制/粘贴列可能更容易,但我不确定是否可以用更少的步骤来完成它! :-]
目标:
- 从同时具有 Scan 和 SAQ 列的表中提取 2 个查询
- 从当前日期开始拉出逾期日期
- 避免重叠数据,有效地添加信息而不是组合
我尝试过的事情:
- 联合查询
- 加入查询
- 使用参数进行实验
谢谢!
编辑
SELECT [Overall Status Report].[Merchant Account Number], [Overall Status Report].[DBA Name], [Overall Status Report].[PCI Contact Name], [Overall Status Report].[PCI Contact Number], [Overall Status Report].[Email address], [Overall Status Report].[ECM Name], [Overall Status Report].[ECM Email], [Overall Status Report].[SAQ Due Date]
FROM [Overall Status Report]
WHERE ((Not ([Overall Status Report].[ECM Name])="ACCOUNT CLOSED") AND (([Overall Status Report].[SAQ Due Date]) Between Date() And Date()-1000))
UNION
SELECT [Overall Status Report].[Merchant Account Number], [Overall Status Report].[DBA Name], [Overall Status Report].[PCI Contact Name], [Overall Status Report].[PCI Contact Number], [Overall Status Report].[Email address], [Overall Status Report].[ECM Name], [Overall Status Report].[ECM Email], [Overall Status Report].[Scan Due Date]
FROM [Overall Status Report]
WHERE ((Not ([Overall Status Report].[ECM Name])="ACCOUNT CLOSED") AND (([Overall Status Report].[Scan Due Date]) Between Date() And Date()-1000));
这很有效,但它不会将 SAQ 数据和 SCAN 数据分成两个单独的列,因此很难知道商家逾期的是哪一列。
编辑 2:
SELECT [Overall Status Report].[Merchant Account Number], [Overall Status Report].[DBA Name], [Overall Status Report].[PCI Contact Name], [Overall Status Report].[PCI Contact Number], [Overall Status Report].[Email address], [Overall Status Report].[ECM Name], [Overall Status Report].[ECM Email], NULL AS [Overall Status Report].[SAQ Due Date], [Overall Status Report].[Scan Due Date]
FROM [Overall Status Report]
WHERE ((([Overall Status Report].[ECM Name])<>"ACCOUNT CLOSED") AND (([Overall Status Report].[SAQ Due Date]) Between Date() And Date()-1000) AND (([Overall Status Report].[Scan Due Date]) Between Date() And Date()-1000))
UNION
SELECT [Overall Status Report].[Merchant Account Number], [Overall Status Report].[DBA Name], [Overall Status Report].[PCI Contact Name], [Overall Status Report].[PCI Contact Number], [Overall Status Report].[Email address], [Overall Status Report].[ECM Name], [Overall Status Report].[ECM Email], [Overall Status Report].[SAQ Due Date], NULL AS [Overall Status Report].[Scan Due Date]
FROM [Overall Status Report]
WHERE ((([Overall Status Report].[ECM Name])<>"ACCOUNT CLOSED") AND (([Overall Status Report].[SAQ Due Date]) Between Date() And Date()-1000) AND (([Overall Status Report].[Scan Due Date]) Between Date() And Date()-1000));
最佳答案
您需要将 NULL
设置为列名称:
SELECT [Merchant Account], [DBA Name], [ECM Name], NULL AS [SCAN Due Date], [SAQ Due Date]
FROM Table1
UNION
SELECT [Merchant Account], [DBA Name], [ECM Name], [SCAN Due Date], NULL AS [SAQ Due Date]
FROM Table2
关于mysql - 合并具有单独日期范围的表而不重叠数据 - Access,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48027846/