SQL 'SELECT' 包含计算列的语句
SQL 'SELECT' Statement with Calculated Column
我正在开发 IT 支持管理数据库。以下 SQL 查询涉及两个 table。 'devices' table 包含公司拥有的所有 PC,'services' table 是在设备上执行的每个服务的列表(即每个设备可以有多个服务).
我希望此查询检索 entire 'devices' table
,但包含一个额外的列,显示每个 device
.[=18= 的 total
个 services
]
我得出的以下说法可能远非正确。对于每一行,它 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
我正在开发 IT 支持管理数据库。以下 SQL 查询涉及两个 table。 'devices' table 包含公司拥有的所有 PC,'services' table 是在设备上执行的每个服务的列表(即每个设备可以有多个服务).
我希望此查询检索 entire 'devices' table
,但包含一个额外的列,显示每个 device
.[=18= 的 total
个 services
]
我得出的以下说法可能远非正确。对于每一行,它 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