Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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选择SQL Server中的最新记录_Sql_Sql Server - Fatal编程技术网

SQL选择SQL Server中的最新记录

SQL选择SQL Server中的最新记录,sql,sql-server,Sql,Sql Server,我正在使用以下MS SQL查询 SELECT Top(100) DateTime, DisplayName, FullName,SampleValue FROM OperationsManagerDW.dbo.vManagedEntity, OperationsManagerDW.dbo.vPerformanceRule, OperationsManagerDW.dbo.vPerformanceRuleInstance, OperationsManag

我正在使用以下MS SQL查询

SELECT Top(100) 
    DateTime, DisplayName, FullName,SampleValue
FROM 
    OperationsManagerDW.dbo.vManagedEntity,
    OperationsManagerDW.dbo.vPerformanceRule,
    OperationsManagerDW.dbo.vPerformanceRuleInstance,
    OperationsManagerDW.Perf.vPerfRaw
WHERE 
    vPerfRaw.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId
    AND vPerfRaw.PerformanceRuleInstanceRowId = vPerformanceRuleInstance.PerformanceRuleInstanceRowId
    AND vPerformanceRuleInstance.RuleRowId = vPerformanceRule.RuleRowId
    AND vPerformanceRule.ObjectName = 'Memory'
    AND vPerformanceRule.CounterName = 'PercentMemoryUsed'
ORDER BY 
    DateTime DESC,Displayname, FullName
我收到了这个

DateTime                     FullName    SampleValue
---------------------------------------------------------
01.09.2014  13:23:29.200    N17.DE1.LOC 162.007
01.09.2014  13:18:29.217    N17.DE1.LOC 160.298
01.09.2014  13:18:29.187    N17.DE1.LOC 159.816
01.09.2014  13:14:24.973    X-OM01.DE1.LOC  285.489
01.09.2014  13:09:24.930    X-OM01.DE1.LOC  304.142
01.09.2014  12:58:29.323    N17.DE1.LOC 159.469
01.09.2014  12:58:29.277    N17.DE1.LOC 159.671
01.09.2014  12:34:38.157    DC1.DE1.LOC 40.221
但我只需要服务器的最新条目(请参阅全名):

请需要帮助。
关于

您可以为此使用行数功能。请尝试以下查询。 我假设您需要每个零件名称的最新记录

WITH data
AS
(
SELECT Top(100) DateTime, DisplayName, FullName,SampleValue,
ROW_NUMBER() OVER(PARTITION BY FullName ORDER BY DATETIME DESC) AS rowNum
FROM OperationsManagerDW.dbo.vManagedEntity,
OperationsManagerDW.dbo.vPerformanceRule,
OperationsManagerDW.dbo.vPerformanceRuleInstance,
OperationsManagerDW.Perf.vPerfRaw
WHERE vPerfRaw.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId
AND vPerfRaw.PerformanceRuleInstanceRowId = vPerformanceRuleInstance.PerformanceRuleInstanceRowId
AND vPerformanceRuleInstance.RuleRowId = vPerformanceRule.RuleRowId
AND vPerformanceRule.ObjectName = 'Memory'
AND vPerformanceRule.CounterName = 'PercentMemoryUsed'

)
SELECT * FROM data
WHERE rowNum =1
ORDER BY [DateTime] DESC,Displayname, FullName

您可以使用row_number函数进行此操作。请尝试以下查询。 我假设您需要每个零件名称的最新记录

WITH data
AS
(
SELECT Top(100) DateTime, DisplayName, FullName,SampleValue,
ROW_NUMBER() OVER(PARTITION BY FullName ORDER BY DATETIME DESC) AS rowNum
FROM OperationsManagerDW.dbo.vManagedEntity,
OperationsManagerDW.dbo.vPerformanceRule,
OperationsManagerDW.dbo.vPerformanceRuleInstance,
OperationsManagerDW.Perf.vPerfRaw
WHERE vPerfRaw.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId
AND vPerfRaw.PerformanceRuleInstanceRowId = vPerformanceRuleInstance.PerformanceRuleInstanceRowId
AND vPerformanceRuleInstance.RuleRowId = vPerformanceRule.RuleRowId
AND vPerformanceRule.ObjectName = 'Memory'
AND vPerformanceRule.CounterName = 'PercentMemoryUsed'

)
SELECT * FROM data
WHERE rowNum =1
ORDER BY [DateTime] DESC,Displayname, FullName

作为Kiran的替代方案,您还可以使用子查询来完成此操作,还可以使用连接来提高可读性

select [fields] from
  ( Select top(100) datetime, id 
    from table1
    order by datetime desc ) T
inner join [other tables]
  on [join condition]
order by datetime desc, displayname, fullname

作为Kiran的替代方案,您还可以使用子查询来完成此操作,还可以使用连接来提高可读性

select [fields] from
  ( Select top(100) datetime, id 
    from table1
    order by datetime desc ) T
inner join [other tables]
  on [join condition]
order by datetime desc, displayname, fullname

您可以使用distinct语句。@R.T.:请尝试按全名字段的一部分进行分组,即
N17.DE1.LOC 162.007
->
N17.DE1.LOC
-不应再使用老式的逗号分隔表列表样式,而是建议使用ANSI-92 SQL标准引入的正确ANSI联接语法(20多年前)好的,我只是从sql开始,使用ANSI92 JOIN查询会是什么样子?您可以使用distinct语句。@R.T.:尝试按全名字段的一部分进行分组,即
N17.DE1.LOC 162.007
->
N17.DE1.LOC
-旧样式逗号分隔的表列表样式不应再使用,建议使用o使用ANSI-92 SQL标准(20多年前)引入的正确的ANSI JOIN语法。好的,我刚开始学习SQL。使用ANSI92 JOIN查询会是什么样子?太好了,我会试试这个!太好了,我会试试这个!