可以使用MAX
功能:
SELECT ID, Name, MAX([Time]) AS [Time]
FROM your_table
GROUP BY ID, Name ;
LiveDemo
輸出:
╔═════╦══════╦═════════════════════╗
║ ID ║ Name ║ Time ║
╠═════╬══════╬═════════════════════╣
║ 111 ║ AAA ║ 2015-11-05 15:39:24 ║
║ 222 ║ BBB ║ 2015-11-04 11:29:11 ║
║ 333 ║ CCC ║ 2015-11-05 15:39:24 ║
╚═════╩══════╩═════════════════════╝
這裏有一個陷阱,雖然,你提供的數據具有相同的ID /名稱對。不同的數據,你會得到:
INSERT INTO #Your_Table(ID,Name,Time) VALUES (111,'AAA','2015-11-05 15:39:24.000');
INSERT INTO #Your_Table(ID,Name,Time) VALUES (222,'BBB','2015-11-04 11:29:11.000');
INSERT INTO #Your_Table(ID,Name,Time) VALUES (111,'AAA','2015-11-02 13:12:10.000');
INSERT INTO #Your_Table(ID,Name,Time) VALUES (333,'CCC','2015-11-05 15:39:24.000');
INSERT INTO #Your_Table(ID,Name,Time) VALUES (111,'DDD','2015-11-01 15:39:24.000');
輸出:
╔═════╦══════╦═════════════════════╗
║ ID ║ Name ║ Time ║
╠═════╬══════╬═════════════════════╣
║ 111 ║ AAA ║ 2015-11-05 15:39:24 ║
║ 222 ║ BBB ║ 2015-11-04 11:29:11 ║
║ 333 ║ CCC ║ 2015-11-05 15:39:24 ║
║ 111 ║ DDD ║ 2015-11-01 15:39:24 ║
╚═════╩══════╩═════════════════════╝
如果你想實際行,而不是分組使用像here結果:
WITH cte AS
(
SELECT ID, MAX([Time]) AS [Time]
FROM #your_table
GROUP BY ID
)
SELECT t.*
FROM #your_table t
JOIN cte c
ON c.ID = t.ID
AND c.[Time] = t.[Time]
LiveDemo2
'select max(time),id,namename from tablename group by id,name' – wiretext