Sql server SQL Server中的查询(现在位于特定项目中的计算机)

Sql server SQL Server中的查询(现在位于特定项目中的计算机),sql-server,Sql Server,我有一个包含3个字段的表,分别是机器名称,项目名称,日期时间 其中,日期时间表示机器分配给项目的确切时间 现在我想找到现在在一个特定项目中的机器(事实上,可能是一台机器在不同的时间被分配到不同的项目) 我希望持续的特定项目是机器分配给它的最新项目。听起来您可以使用以下内容: select t1.ProjectName, t2.Datetime, t2.MachineName from yourtable t1 left join ( select max(datetime) Date

我有一个包含3个字段的表,分别是
机器名称
项目名称
日期时间
其中,
日期时间
表示机器分配给项目的确切时间

现在我想找到现在在一个特定项目中的机器(事实上,可能是一台机器在不同的时间被分配到不同的项目)


我希望持续的特定项目是机器分配给它的最新项目。

听起来您可以使用以下内容:

select t1.ProjectName,
  t2.Datetime,
  t2.MachineName
from yourtable t1
left join
(
  select max(datetime) DateTime, MachineName
  from yourtable
  group by MachineName
) t2
  on t1.machinename = t2.machinename
  and t1.datetime = t2.datetime
甚至:

select projectname, datetime, machinename
from 
(
  select projectname,
    datetime,
    machinename,
    row_number() over(partition by machinename order by datetime desc) rn
  from yourtable
) src
where rn = 1

我希望现在在特定项目中的机器,可能是机器“a”,2天前在项目“1”中,现在在项目“2”中,当我在项目“1”中创建机器时,机器“a”不应该出现在结果中。@user1788354项目1现在会有一个与之关联的不同机器吗?