【发布时间】:2014-11-20 22:31:48
【问题描述】:
我有以下视图,它从 PERFMON 创建的原始表中提取行。每 60 秒插入一个新行。
SELECT
dbo.CounterDetails.MachineName, dbo.CounterDetails.ObjectName,
dbo.CounterDetails.CounterName, dbo.CounterDetails.InstanceName,
dbo.CounterData.CounterValue, CONVERT(DATETIME, CONVERT(VARCHAR(16),
dbo.CounterData.CounterDateTime)) AS Date, dbo.CounterData.GUID
FROM
dbo.CounterData
INNER JOIN
dbo.CounterDetails ON dbo.CounterData.CounterID = dbo.CounterDetails.CounterID
INNER JOIN
dbo.DisplayToID ON dbo.CounterData.GUID = dbo.DisplayToID.GUID
选择 * 会返回的地方,例如
GUID CounterID RecordIndex CounterDateTime CounterValue FirstValueA FirstValueB SecondValueA SecondValueB MultiCount
362035A1-50A6-4F91-9423-82DCB5DED11B 1 1 2014-11-20 12:35:30.635 7459 7459 0 0 0 1
...
...
...
GUID CounterID RecordIndex CounterDateTime CounterValue FirstValueA FirstValueB SecondValueA SecondValueB MultiCount
362035A1-50A6-4F91-9423-82DCB5DED11B 115 283 2014-11-20 17:22:13.424 0 0 0 0 0 1
我正在尝试根据基于 Web 的应用程序的 DATE 值 (DateTime) 从视图中获取最新的行,我只想在视图中显示最近的(最后)行。我尝试了很多东西,这是最新的,我尝试过的所有东西都给了我所有的行。甚至可以按时间将查询限制为最后插入的行(或者更复杂,查找执行时小于 60 秒的任何时间戳)。
SELECT
CounterValue , MachineName, ObjectName, CounterName,[Date]
FROM
[dbo].[PerfView] A
WHERE
ObjectName = 'Network Interface'
AND CounterName = 'Bytes Total/sec'
AND CounterValue <> 0
AND MachineName = '\\********
AND [Date] = (SELECT MAX([Date])
FROM [dbo].[PerfView] B
WHERE a.CounterValue = b.CounterValue)
【问题讨论】:
-
select top 1 ... order by [date] desc
标签: sql sql-server sql-server-2008 datetime