2011-07-03 42 views
1

我有一個數據庫與長長的記錄列表。大多數列對其他表都有外鍵。SQL Server的 - 分組,有,並在計數混合

ID SectorId BranchId 
-- -------- -------- 
5 3  5 

然後,我將與部門,分公司ECT表。

我的問題

我想知道有多少條記錄具有行業1,2,3,...,N。所以我想要的是一個group by Sector,然後一些count(*)這將告訴我每個有多少。

預計輸出

因此,舉例來說,如果我有20個記錄的結果可能是這樣的:

SectorId Count 
-------- ----- 
1  3 
2  10 
3  4 
4  6 

我嘗試到目前爲止

我不能正常工作很多數據庫和我一直試圖解決這個1.5小時。我已經試過這樣的事情:

SELECT COUNT(*) 
FROM Records r 
GROUP BY r.Sector 
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31' 

但是......全國各地的錯誤和問題!

我真的很感謝一些幫助。我知道這可能很簡單。

謝謝!

回答

4

查詢的順序不正確;它應該是這樣的: -

SELECT COUNT(*) 
FROM Records r 
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31' 
GROUP BY r.Sector 

輸出將是唯一的計數,即

count 
----- 
3 
10 
4 
6 

如果你想獲取兩部門再算上你需要修改查詢有點

SELECT r.Sector, COUNT(*) as Count 
FROM Records r 
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31' 
GROUP BY r.Sector 

輸出將是這樣的: -

Sector Count 
------ ----- 
1  3 
2  10 
3  4 
3  6 
+0

非常感謝! :-)這真的幫助我! –

1

您的查詢是部分正確的,但它需要一些修改。

如果我寫的是這樣的: -

SELECT r.SectorID,COUNT(*) AS count 
FROM Records r 
WHERE r.Date BETWEEN '2011-01-01' AND '2011-12-31' 
GROUP BY r.SectorID 

然後輸出將是: -

SectorID Count 
1   3 
2   10 
3   4 
4   6