选择带有计数列的查询

时间:2021-02-18 19:16:25

标签: sql sql-server

我需要对员工进行选择查询并添加两列,其中包含他们从另一个表中拥有的项目数的计数。

我试图让它与连接一起工作,但无法让它工作。我终于让它与子查询一起工作,但想知道是否有办法使用连接来做到这一点。

这是我开始工作的代码:

fav_country(country_id, device_id)

结果如下:

enter image description here

有没有更好的方法来获得相同的输出?

2 个答案:

答案 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
相关问题