0

OS を見て、物理サーバーのアップタイムと仮想サーバーのアップタイムを区別しようとしています。VMWare OS の結果を引き出すことはできますが、物理サーバーを 1 つの行としてグループ化したいと考えています。

これが私がこれまでに持っているコードです:

   SELECT TOP (100) PERCENT Avg(dbo.tblserveruptime.uptime) AS Uptime, 
                         Count(*)                        AS Total 
FROM   dbo.server 
       INNER JOIN dbo.tblserveruptime 
               ON dbo.server.name = dbo.tblserveruptime.name 
WHERE  ( dbo.server.status = N'production' ) 
       AND ( dbo.server.server_env = N'prod' ) 
       AND ( dbo.server.os_type <> N'vmware' ) 
GROUP  BY dbo.tblserveruptime.month, 
          dbo.tblserveruptime.year 
HAVING ( dbo.tblserveruptime.month = 4 ) 
       AND ( dbo.tblserveruptime.year = 2013 ) 
UNION 
SELECT TOP (100) PERCENT Avg(dbo.tblserveruptime.uptime) AS Uptime, 
                         Count(*)                        AS Total 
FROM   dbo.server 
       INNER JOIN dbo.tblserveruptime 
               ON dbo.server.name = dbo.tblserveruptime.name 
WHERE  ( dbo.server.status = N'production' ) 
       AND ( dbo.server.server_env = N'prod' ) 
       AND ( dbo.server.os_type = N'vmware' ) 
GROUP  BY dbo.tblserveruptime.month, 
          dbo.tblserveruptime.year 
HAVING ( dbo.tblserveruptime.month = 4 ) 
       AND ( dbo.tblserveruptime.year = 2013 ) 
4

2 に答える 2

0

わかりました、助けようとしたすべての人に感謝します。前後の結果の画像を載せてみたのですが、名声点が10点も無いので出来ませんでした。とにかく、私はそれを得たと思います。ここにあります:

SELECT     AVG(dbo.tblServerUptime.Uptime) AS Uptime, 
CASE WHEN OS_TYPE = 'VMWare' THEN 'Virtual' ELSE 'Physical' END AS [Physical vs VM]
FROM         dbo.Server INNER JOIN
                      dbo.tblServerUptime ON dbo.Server.NAME = dbo.tblServerUptime.NAME
GROUP BY CASE WHEN OS_TYPE = 'VMWare' THEN 'Virtual' ELSE 'Physical' END
于 2013-06-06T12:57:24.170 に答える