Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 获取最新记录的数据库_Sql Server_Sql Server 2008 - Fatal编程技术网

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