我有两个表,一个用于Employees,第二个用于记录。我希望获得每位员工的总条目,并按最大总条目订购结果,如:
Daniel 3
David 1
tblEmployee:
EID Name
1 Daniel
2 David
tblEntry:
ID Column1 EID
1 XX 1
2 XX 1
3 XX 2
4 XX 1
答案 0 :(得分:2)
试试这个:
select emp.EID,emp.Name,COUNT(etr.EID)
as total_entries from Employee emp join Entry etr
on emp.EID=etr.EID
group by emp.EID,emp.Name
答案 1 :(得分:0)
您必须使用group by
select count(*) from tblEmployee ee, tblEntry e where ee.eid = e.eid group by ee.name
答案 2 :(得分:0)
这有几个变种,你没有说你正在使用的SQL Server版本,但我喜欢这样做:
;
using A
as (
select EID
, RecordCount = COUNT(*)
from tblEntry
group by
EID
)
select a.EID
, e.Name
, a.RecordCount
from A
join tblEmployee e
on A.EID = e.EID
order by
RecordCount desc
我喜欢这样做而不是加入然后总结,因为你只需要对最小数量的字段进行分组。 EID
中的tblEntry
可能已经有一个索引,而Name
中的tblEmployee
可能不会。