Sql server 获取最新记录的数据库
我有数据库结构Sql server 获取最新记录的数据库,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有数据库结构 Inside DateTime VehNo 0 2014-06-03 10:51:36 1 1 2014-06-03 09:13:57 1 0 2014-06-03 10:35:38 2 1 2014-06-03 10:40:38 2 我希望这样的输出基于日期时间 Inside DateTim
Inside DateTime VehNo
0 2014-06-03 10:51:36 1
1 2014-06-03 09:13:57 1
0 2014-06-03 10:35:38 2
1 2014-06-03 10:40:38 2
我希望这样的输出基于日期时间
Inside DateTime VehNo
0 2014-06-03 10:51:36 1
1 2014-06-03 10:40:38 2
假设Inside和VehNo列是唯一的:
SELECT inside, MAX([datetime]) as latest_datetime, vehno
FROM mytable
GROUP BY inside, vehno;
假设只有VehNo是唯一的:
WITH max_date AS (
SELECT max([datetime]) as max_datetime, vehno FROM mytable GROUP BY vehno
)
SELECT m.* FROM mytable m
INNER JOIN max_date md ON m.[datetime] = md.max_datetime AND m.vehno = md.vehno;
试试这个:
SELECT T1.Inside,T2.DateTime,T2.VehNo
FROM TableName T1 JOIN
(SELECT MAX([DateTime]) as [DateTime],VehNo
FROM TableName
GROUP BY VehNo) T2
ON T1.DateTime=T2.DateTime AND T1.VehNo=T2.VehNo
ORDER BY T2.VehNo
例如
说明:
这里我们为每个VehNo选择datetime的最大值。然后,我们将此结果与表本身连接起来,以获取相应的内部数据。如果您想要每个VehNo的最后日期时间,则内部选项应为您的查询:
SELECT M.Inside,
M.DateTime,
M.VehNo
FROM mytable M
INNER JOIN (SELECT MAX(DateTime) as max_date,
Inside,
VehNo
FROM mytable T
GROUP BY
VehNo, Inside)
ON M.Inside = T.Inside
AND M.DateTime = T.max_date
AND M.VehNo = T.VehNo
因此,如果我理解正确,您希望每个单独的VehNo或Inside的最新条目??价值观-对吗?你应该说出你真正想要的!不要把一堆记录丢给我们,以为我们知道你的意思!基本上,里面是一个状态字段,我希望vehno的最新状态基于日期时间,在这个查询中,有两个表涉及其中一个是vehicle,另一个是date time with status。请参阅enigma对我的注释的注释-他希望每个vehno的最新行,因此您应该使用PARTITION by VehNoYes,如果您希望vehno的最新状态,然后被维诺分割
SELECT M.Inside,
M.DateTime,
M.VehNo
FROM mytable M
INNER JOIN (SELECT MAX(DateTime) as max_date,
Inside,
VehNo
FROM mytable T
GROUP BY
VehNo, Inside)
ON M.Inside = T.Inside
AND M.DateTime = T.max_date
AND M.VehNo = T.VehNo