Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.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 2000 - Fatal编程技术网

Sql server 当返回多个记录时,将结果限制为不同的系统名称

Sql server 当返回多个记录时,将结果限制为不同的系统名称,sql-server,sql-server-2000,Sql Server,Sql Server 2000,这是在SQL Server 2000上运行的 背景:当一台新服务器进入网络时,它将经历一系列状态(阶段),例如(加载、测试、配置、生产等),因为生产是最后一步(并非报告中的每台服务器都处于生产状态,因此此信息可能是一个无意义的点) 我继承了这一点,所以如果有任何问题,我会尽可能地回答。我正在尝试运行一个查询,以获取特定时间段内所有服务器的最新状态。我的查询当前正在返回服务器的每个状态,我只需要当前状态,这就是我需要您帮助的地方 我正在处理的查询如下: SELECT SD.ProjectName,

这是在SQL Server 2000上运行的

背景:当一台新服务器进入网络时,它将经历一系列状态(阶段),例如(加载、测试、配置、生产等),因为生产是最后一步(并非报告中的每台服务器都处于生产状态,因此此信息可能是一个无意义的点)

我继承了这一点,所以如果有任何问题,我会尽可能地回答。我正在尝试运行一个查询,以获取特定时间段内所有服务器的最新状态。我的查询当前正在返回服务器的每个状态,我只需要当前状态,这就是我需要您帮助的地方

我正在处理的查询如下:

SELECT SD.ProjectName, SD.SystemName, SD.Status, H.history_id
FROM dbo.SI_SystemDetail AS SD 
INNER JOIN dbo.SI_Projects AS P ON SD.ProjectName = P.ProjectName 
INNER JOIN dbo.SI_StatusHistory AS H ON SD.SystemName = H.SystemName   
WHERE     
    (P.Cancelled = 'N') 
    AND (P.Platform LIKE '%ibm%') 
    AND ('20110101' <= CONVERT(varchar(8), H.EffectiveDate, 112)) 
    AND (CONVERT(varchar(8), H.EffectiveDate, 112) <= '20111111')   
ORDER BY 
     H.history_id DESC, SD.SystemName, SD.ContactSBCuid, SD.ActualLiveDAte DESC, 
     SD.ProjectName, SD.SystemType, H.EffectiveDate`
我只需要返回以下结果:

Server Name        Status       History_ID  
Server01           Production   1451
Server02           Failed       1455
提前感谢您的帮助。

未经测试:

SELECT SD.ProjectName, SD.SystemName, SD.Status, H.history_id 
FROM dbo.SI_SystemDetail AS SD 
INNER JOIN dbo.SI_Projects AS P 
  ON SD.ProjectName = P.ProjectName 
INNER JOIN dbo.SI_StatusHistory AS H 
  ON SD.SystemName = H.SystemName
WHERE (P.Cancelled = 'N') AND (P.Platform LIKE '%ibm%') AND ('20110101' <= CONVERT(varchar(8), H.EffectiveDate, 112)) AND (CONVERT(varchar(8), H.EffectiveDate, 112) <= '20111111')
AND history_ID = (
  Select max(history_ID) 
  FROM SI_Status_History iSH 
  where iSH.SystemName = SD.SystemName)
ORDER BY H.history_id DESC, SD.SystemName, SD.ContactSBCuid, SD.ActualLiveDAte DESC, SD.ProjectName, SD.SystemType, H.EffectiveDate
选择SD.ProjectName、SD.SystemName、SD.Status、H.history\u id
从dbo.SI_系统详细信息作为SD
内部连接dbo.SI_项目作为P
在SD.ProjectName=P.ProjectName上
内部连接dbo.SI_StatusHistory作为H
在SD.SystemName=H.SystemName上

WHERE(P.Cancelled='N')和(P.Platform,如'%ibm%')和('20110101'@marc-s,感谢您的清理。我尝试了,但情况越来越糟。:)我知道它需要一个子查询,但我不知道放在哪里。非常感谢。我刚刚实现了您的解决方案并对其进行了测试,结果非常完美。再次感谢。
SELECT SD.ProjectName, SD.SystemName, SD.Status, H.history_id 
FROM dbo.SI_SystemDetail AS SD 
INNER JOIN dbo.SI_Projects AS P 
  ON SD.ProjectName = P.ProjectName 
INNER JOIN dbo.SI_StatusHistory AS H 
  ON SD.SystemName = H.SystemName
WHERE (P.Cancelled = 'N') AND (P.Platform LIKE '%ibm%') AND ('20110101' <= CONVERT(varchar(8), H.EffectiveDate, 112)) AND (CONVERT(varchar(8), H.EffectiveDate, 112) <= '20111111')
AND history_ID = (
  Select max(history_ID) 
  FROM SI_Status_History iSH 
  where iSH.SystemName = SD.SystemName)
ORDER BY H.history_id DESC, SD.SystemName, SD.ContactSBCuid, SD.ActualLiveDAte DESC, SD.ProjectName, SD.SystemType, H.EffectiveDate