我有两个表,一个用于员工,第二个用于记录。我想每一个员工总条目,并命令由像最大总项结果:SQL选择计数声明
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
我有两个表,一个用于员工,第二个用于记录。我想每一个员工总条目,并命令由像最大总项结果:SQL选择计数声明
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
试试这个:
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
您必须使用group by
select count(*) from tblEmployee ee, tblEntry e where ee.eid = e.eid group by ee.name
有几种在这方面的变化,你不说你使用的是什么版本的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
可能不会。
这是一个基本的JOIN GROUP BY – Mihai 2014-10-02 11:09:32