3

我知道这必须是一个简单的选择,但我没有运气弄清楚。我有一个表有一个客户分组代码字段,我正在尝试计算每个不同的字符 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))并删除第一个不同的子字符串,我只会得到存在多少不同代码的计数。有人可以指出我在这里做错了什么吗?谢谢。

4

1 回答 1

6

DISTINCTGROUP BY是多余的,你只想要,GROUP BY并且你想要GROUP BY你选择的同样的东西:

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

ORDER BY在 SQL Server 中,您可以在子句中使用列别名/编号,但不能在GROUP BY.

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

于 2013-08-01T16:46:17.113 回答