带有计算列的SQL'SELECT'语句

时间:2015-01-31 07:32:01

标签: sql sql-server-2012

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

我希望此查询检索entire 'devices' table,但包含一个额外的列,显示每个total的{​​{1}}个services个数。

我提出的以下陈述可能远非正确。对于每一行,它返回device表中记录总数的计数(即每行上的相同数字),而不是对每个设备进行分组/过滤。

'services'

我应该采用什么方法来实现这一目标?提前感谢您的任何指导或帮助!

1 个答案:

答案 0 :(得分:1)

如果您想要devices表中的所有行,那么dbo.devices的{​​{1}}左侧应该出现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