如何从表格中选择最新的每日数据?

时间:2012-07-23 14:22:48

标签: sql-server windows tsql

我有一个Logging表。在此表中有一个列类型datetime。我如何选择最新的每日记录?有人可以帮助我吗?

谢谢!

更新! 在此表中,有以下列: InventoryNr,SerialNr,Oldusername,OlduserId,oldcostcenter,newusername,newuserid,newcostcenter,changedby,changedate。

此处将自动插入设备。因此,如果在计算机上检测到监视器,它将被记录在此表中。但是,如果我将显示器移动到另一台电脑,它将再次被录制。但在某些情况下,显示器可以在两台PC之间“跳”。和PC一样,它是一样的。如果PC的所有者已被更改,那么它将自动插入此处等等。因此,如果我运行此查询,我只需要设备的最新行,从当天开始。希望你现在能理解我的意思。

谢谢!

3 个答案:

答案 0 :(得分:1)

要获得最后20行,无论何时发生:

SELECT TOP (20) cols FROM dbo.LoggingTable ORDER BY EventDate DESC;

获取今天发生的所有行,按降序排列:

SELECT cols FROM dbo.LoggingTable
  WHERE EventDate >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
  ORDER BY EventDate DESC;

只获取最后20行,只要它们今天发生(意味着你可以得到< 20行):

SELECT TOP (20) cols FROM dbo.LoggingTable
  WHERE EventDate >= DATEADD(DAY, 0, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))
  ORDER BY EventDate DESC;

我强烈建议不要在列中应用任何公式。

答案 1 :(得分:0)

试试这个:

select yourFields from yourTable
group by yourFieldDate,yourOtherFields
having yourFieldDate= MAX(yourFieldDate)

答案 2 :(得分:0)

如果使用SQL 2008,您可以:

SELECT * FROM Table WHERE TimeStamp > CAST(GETDATE() AS DATE) ORDER BY TimeStamp DESC