选择子字符串的计数

时间:2013-08-01 16:44:48

标签: sql sql-server-2008 select count substring

我知道这必须是一个简单的选择,但我没有运气搞清楚。我有一个表有一个客户分组代码字段,我正在尝试计算每个不同的字符2到6集。在我过去的foxpro体验中简单

select distinct substr(custcode,2,5), count (*) from a group by 1

可以工作,但这似乎不适用于SQL Server查询。错误消息表明它不喜欢使用组中的数字引用,所以我将其更改为custcode,但计数只返回1,因为我假设计数是在发生不同之后所以只有一个。如果我将计数更改为count(distinct substring(custcode,2,5))并删除第一个不同的子字符串,我只计算存在多少个不同的代码。谁能指出我在这里做错了什么?感谢。

1 个答案:

答案 0 :(得分:4)

DISTINCTGROUP BY是多余的,您只需要GROUP BY,并且您希望GROUP BY选择相同的内容:

select substr(custcode,2,5), count (*) 
from a 
group by substr(custcode,2,5)

在SQL Server中,您可以在ORDER BY子句中使用列别名/数字,但不能在GROUP BY中使用。

IE中。 ORDER BY 1将按第一个选定列排序,但许多人认为使用列索引是不好的做法,使用别名/列名更清楚。