选择子字符串的计数

use*_*700 3 sql select substring count sql-server-2008

我知道这必须是一个容易的选择,但是我没有运气来弄清楚它。我有一个表,其中包含客户分组代码字段,并且我试图获取2到6组的每个不同字符的计数。在我过去的foxpro经验中,一个简单的

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

可以,但是在SQL Server查询中似乎不起作用。错误消息表明它不喜欢在group by中使用数字引用,因此我将其更改为custcode,但每个计数仅返回1,因为我认为计数是在发生不同情况之后才出现,因此只有一个。如果我将计数更改为count(distinct substring(custcode,2,5))并删除第一个不同的子字符串,那么我只会得到存在多少个不同代码的计数。有人可以指出我在做什么错吗?谢谢。

Har*_* CO 5

DISTINCTGROUP BY是多余的,你只是想GROUP BY和你想GROUP BY你选择同样的事情:

select substr(custcode,2,5), count (*) 
from a 
group by substr(custcode,2,5)
Run Code Online (Sandbox Code Playgroud)

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

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