T-Sql
查找具有多個日期列的最近更新的記錄
我最近繼承了一個從舊的 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 Docs:
一個 SELECT 語句子句,將查詢結果分成多組行,通常用於對每個組執行一個或多個聚合。SELECT 語句每組返回一行。
SELECT SerialNumber, MAX(Repair_Date) as Repair_Date, MAX(Inspection_Date) as Inspection_Date, MAX(Replaced_Date) as Replaced_Date FROM YourTable GROUP BY SerialNumber