我最近继承了一个从旧的 MS Access 数据库转换而来的 SQL Server 2016 数据库。我有一个表格,其中显示了相关序列号的各种维修日期和测试日期。我希望每个序列号有一行显示所有最近的日期。表格现在根据输入数据库的不同日期显示每个序列号的多行。
维修和配置日期表:
+------+-------------+-----------------+---------------+
| S/N | REPAIR_DATE | INSPECTION_DATE | REPLACED_DATE |
+------+-------------+-----------------+---------------+
| 1001 | 2017-11-17 | 2017-11-17 | NULL |
| 1002 | NULL | NULL | NULL |
| 1002 | 2016-11-21 | 2016-11-21 | NULL |
| 1004 | NULL | NULL | NULL |
| 1004 | NULL | 2017-03-28 | 2017-09-07 |
| 1004 | 2017-12-15 | NULL | NULL |
+------+-------------+-----------------+---------------+
期望的输出
+------+-------------+-----------------+---------------+
| S/N | REPAIR_DATE | INSPECTION_DATE | REPLACED_DATE |
+------+-------------+-----------------+---------------+
| 1001 | 2017-11-17 | 2017-11-17 | NULL |
| 1002 | 2016-11-21 | 2016-11-21 | NULL |
| 1004 | 2017-12-15 | 2017-03-28 | 2017-09-07 |
+------+-------------+-----------------+---------------+
如何合并表格结果,以便只有一行序列号显示每列的最新日期?
在这种情况下,您可以使用GROUP BY获取聚合 MAX(Date) :
引用自 MS 文档: