选择也可能具有相似性的Distinct记录(总计数)

时间:2015-04-29 15:48:28

标签: sql

不确定这是否可行,但基本上我有一个包含2列的表:ID和Category。一些示例记录如下所示:

1 Accounting 
2 Accounting 
3 Accounting & Tax Preparation
4 Banks
5 Banks & Financial Services
6 Real Estate
7 Real Estate - Commercial
8 Real Estate - Commercial & Residential
9 Real Estate

我想要生成的是一个列表,它只选择一次类别但计算每个类别的出现次数,并且还可以消除非常相似的重复项。所以结果看起来应该是这样的:

Real Estate - 4
Accounting - 3
Banks - 2

我现在拥有的是:

    SQL = "SELECT DISTINCT(category), Count(*) as c " & _
      "FROM myTable " & _
      "GROUP BY category" & _
      "ORDER BY c DESC, category"

所以它有自己列出的所有类似的,而不是与其他类似的组合。我知道我可以使用" LIKE"带有通配符的关键字,但是当你不知道可能的类别是什么时,你会怎么写呢?

任何建议表示赞赏,谢谢!

1 个答案:

答案 0 :(得分:1)

除了Real Estate有多少组有额外的空间?您可以使用CHARINDEX来定位空间(假设MS SQL),然后按照左边的字符进行分组。

SELECT LEFT(Category, LEN(Category) - CHARINDEX(' ', Category)), COUNT(*) FROM myTable GROUP BY LEFT(Category, LEN(Category) - CHARINDEX(' ', Category))