Recentemente, herdei um banco de dados SQL Server 2016 que foi convertido de um banco de dados antigo do MS Access. Eu tenho uma tabela que mostra várias datas de reparo e datas de teste para números de série associados. Eu gostaria de ter uma única linha por número de série com todas as datas mais recentes mostradas. A tabela agora está mostrando várias linhas por número de série, dependendo das várias datas inseridas no banco de dados.
Tabela de datas de reparo e configuração:
+------+-------------+-----------------+---------------+
| 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 |
+------+-------------+-----------------+---------------+
Saída Desejada
+------+-------------+-----------------+---------------+
| 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 |
+------+-------------+-----------------+---------------+
Como posso combinar os resultados da tabela para que apenas uma linha do número de série mostre as datas mais recentes de cada coluna?
Você pode obter os agregados, MAX(Date) neste caso, usando GROUP BY :
Citado de MS Docs: