Sql Server 2005使用count和distinct一起使用

时间:2011-08-18 14:04:39

标签: sql-server-2005 count distinct

我试图获取数据库中每个不同字段的计数。例如,我们正在使用一个名为sourceCodes的东西 - 我希望能够看到我的数据库中有多少个不同的sourceCode。到目前为止,我有这个

SELECT sourceCode, COUNT(DISTINCT sourceCode) 
FROM [SecureOrders] 
WHERE DateTime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) 
  AND DateTime < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1) 
GROUP BY sourceCode

(我试图首先显示sourceCode的名称,然后是计数)。到目前为止,我在第二栏中唯一得到的是&#34; 1&#34; ......而且我的肯定有不止一个。我知道我这个问题的措辞非常糟糕,但我无法通过任何其他方式说出来。有人能看出为什么会这样吗?

2 个答案:

答案 0 :(得分:4)

样本中的“distinct”未在正确的位置应用。通过SourceCode进行分组,您已经从该列获得了不同的值。

因此,您只需计算每组中的行数:

SELECT sourceCode, COUNT(*) 
FROM [SecureOrders] 
WHERE DateTime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) 
  AND DateTime < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1) 
GROUP BY sourceCode

答案 1 :(得分:1)

删除DISTINCT:

SELECT sourceCode, COUNT(sourceCode) 
FROM [SecureOrders] 
WHERE DateTime >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)   
  AND DateTime < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1) 
GROUP BY sourceCode