我有兩個表,一個用於員工,第二個用於記錄。我想每一個員工總條目,並命令由像最大總項結果: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