我需要对员工进行选择查询并添加两列,其中包含他们从另一个表中拥有的项目数的计数。
我试图让它与连接一起工作,但无法让它工作。我终于让它与子查询一起工作,但想知道是否有办法使用连接来做到这一点。
这是我开始工作的代码:
fav_country(country_id, device_id)
结果如下:
有没有更好的方法来获得相同的输出?
答案 0 :(得分:1)
你的方法很好。但是,我也建议将 apply
与条件聚合一起使用:
Select e.Id, e.Name, e.Description, eq.*
from Employees as e cross apply
(select sum(case when typeId = 1 then 1 else 0 end) as SmartPhoneCount,
sum(case when typeId = 2 then 1 else 0 end) as LapTopCount
from Equipment eq
where eq.EmployeeId = e.id
) eq;
答案 1 :(得分:0)
我相信这样的事情可行吗?
SELECT
e.Id,
e.Name,
e.Description,
SUM(CASE WHEN b.TypeID = 1 then 1 else 0 END) as 'SmartphoneCount',
SUM(CASE WHEN b.TypeID = 2 then 1 else 0 END) as 'labtopCount'
FROM Employees as e
LEFT JOIN Equipment b ON e.ID = b.EmployeeId
GROUP BY 1, 2, 3