2011-07-03 6 views
1

私は長いレコードのリストを持つデータベースを持っています。ほとんどの列は、他の表への外部キーを持っています。SQL Server - グループ化されていて、ミックスを持っているとカウントします。

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

そして私は、部門、支店電気ショック療法を持つテーブルを持っています。

私の問題は:

私は、n ...セクタ1、2、3を持っているレコードの数を知りたいです。だから私が欲しいのは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 r.Sector, COUNT(*) as 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 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 
関連する問題