SQL 'SELECT' 包含计算列的语句

SQL 'SELECT' Statement with Calculated Column

我正在开发 IT 支持管理数据库。以下 SQL 查询涉及两个 table。 'devices' table 包含公司拥有的所有 PC,'services' table 是在设备上执行的每个服务的列表(即每个设备可以有多个服务).

我希望此查询检索 entire 'devices' table,但包含一个额外的列,显示每个 device.[=18= 的 totalservices ]

我得出的以下说法可能远非正确。对于每一行,它 returns 'services' table 中的记录总数计数(即每行相同的数字)而不是每个设备的 grouping/filtering。

SELECT *,
       (SELECT Count(services.id)
        FROM   dbo.services
               LEFT JOIN devices
                      ON services.assetID = devices.assetID
        GROUP  BY devices.assetID) AS TotalServices
FROM   dbo.devices 

我应该使用什么方法来实现这一目标?在此先感谢您的指导或帮助!

如果您想要 devices table 中的所有行,那么 dbo.devices 应该出现在 Left outer Join 的左侧。

去掉subquery,变成Left outer join,然后统计每个assetID的服务次数。试试这个。

SELECT devices.assetID,
       TotalServices=Count(services.id)
FROM   dbo.devices
       LEFT JOIN dbo.services
              ON services.assetID = devices.assetID
GROUP  BY devices.assetID