Sql server 如果有最新的记录,我如何分组?
让我们想象一下我有一张像这样的桌子Sql server 如果有最新的记录,我如何分组?,sql-server,Sql Server,让我们想象一下我有一张像这样的桌子 name time_stamp quantity John 2017-11-28 08:46:01 65 Clark 2017-11-28 08:44:08 98 John 2017-11-28 08:50:54 74 我需要的是,按名称分组,并从最新记录中获取数据。我不能按姓名分组,因为电脑不知道应该为John使用什么数据。我需要像这样的输出 name time_stamp
name time_stamp quantity
John 2017-11-28 08:46:01 65
Clark 2017-11-28 08:44:08 98
John 2017-11-28 08:50:54 74
我需要的是,按名称分组,并从最新记录中获取数据。我不能按姓名分组,因为电脑不知道应该为John使用什么数据。我需要像这样的输出
name time_stamp quantity
Clark 2017-11-28 08:44:08 98
John 2017-11-28 08:50:54 74
因为65比74老
我尝试选择name,MAX(time_stamp)作为time_stamp,按time_stamp分组表1中的数量,但它对我不起作用,因为-
列“table1.name”在选择列表中无效,因为它不是
包含在聚合函数或GROUP BY子句中
可以使用派生表选择最大值(时间戳)
可以使用派生表选择最大值(时间戳)
WITH CTE AS(
SELECT *,
ROW_NUMBER() OVER (PARTITION BY [name] ORDER BY time_stamp DESC) AS RN
FROM YourTable)
SELECT *
FROM CTE
WHERE RN = 1;
SELECT T1.*
FROM (
SELECT [name]
,MAX(time_stamp) AS MAXtime_stamp --MAX time_stamp by name
FROM table1
GROUP BY [name]
) AS dT INNER JOIN table1 T1 ON dT.MAXtime_stamp = T1.time_stamp
AND dT.[name] = T1.[name]