2012-04-02 43 views
-1

我正在使用SQL Server 2008,并且我有一个表中包含“状态”列。有五种可能的状态:已提交,正在进行,已删除,已实施,尚未实施。获取表列中每个值的计数

我想弄清楚写一个SQL语句,将返回这些状态的每一个的计数,但我的代码要么返回数字状态,要么是特定状态的计数。这是我与合作:

SELECT  COUNT(ServiceAreaID) AS ServiceArea 
FROM   Suggestions 
WHERE  (ServiceAreaID = 6) 

或这一个

SELECT  COUNT(DISTINCT ServiceAreaID) AS ServiceArea 
FROM   Suggestions 
+0

您是否想知道每个“ServiceAreaID”出现在表中的次数? – 2012-04-02 18:04:37

回答

2

对于一个:

SELECT Status, COUNT(*) 
FROM dbo.Suggestions 
WHERE ServiceAreaID = 6 
GROUP BY Status; 

对于所有:

+0

+1,因为你没有得到接受,你应得的。我希望这提供了一些安慰;-) – 2012-04-02 18:28:18

+0

是啊,我为你+1以及 – jzworkman 2012-04-02 18:33:20

+0

固定,谢谢你的帮助! – Omni 2012-04-19 14:53:44

0
SELECT ServiceAreaID, COUNT(*) AS ServiceArea 
FROM Suggestions 
GROUP BY ServiceAreaID 

这应该给你一个每个服务区域ID的计数。用你的状态替换组中的服务区域id(如果需要的话,下面包括一个与serviceAreaID分开的状态列)。

SELECT ServiceAreaID, status, COUNT(*) AS count 
    FROM Suggestions 
    GROUP BY ServiceAreaID, status 
+0

“状态”列在哪里? – 2012-04-02 18:09:26

+0

我认为状态栏是他的代码示例中的'serviceAreaID'。因此,我的评论是,如果它不同(只能使用OP给我的信息),他可以用status列代替它。 – jzworkman 2012-04-02 18:10:47

+0

通过阅读我确定的问题,同时存在“Status”和“ServiceAreaID”列。 – 2012-04-02 18:11:36

1
select ServiceAreaID,count(*),status 
from suggestion 
group by status,suggestion; 
+0

哇在3秒内回答了3个回答 – Habib 2012-04-02 18:05:33

+0

这个查询似乎完全忽略了'ServiceAreaID' – 2012-04-02 18:09:35

+0

@AaronBertrand,谢谢,编辑我的回答 – Habib 2012-04-02 18:15:21

0

我想你要寻找的是这样的:

SELECT ServiceAreaID, COUNT(ServiceAreaID) AS COUNT 
FROM Suggestions 
GROUP BY ServiceAreaID 

我没有看到你的SQL例子Status列,但万一有应该是一个,查询会更像这样:

这个答案基本上和Aaron是一样的,所以如果这是你要找的东西,一定要把Aaron标记为答案。

SELECT ServiceAreaID, Status, COUNT(*) AS COUNT 
FROM Suggestions 
GROUP BY ServiceAreaID, Status 
+0

“状态”列怎么样? – 2012-04-02 18:10:05

+0

我在想这件事,但在他的例子中我没有看到任何对状态的引用。我想这不会伤害添加它。 – 2012-04-02 18:14:06

+0

谢谢,这个作品! – Omni 2012-04-02 18:22:21