具有相似ID的分组

时间:2018-08-22 16:21:10

标签: sql sql-server aggregate-functions

我有一张表,其中包含多个项目,这些项目的ID稍有不同,我想将它们归为一个通用ID。我的桌子看起来像这样:

ID          | Total
alex_dog       1
ben_dog        2
charlie_dog    3
alex_cat       4
ben_cat        5
charlie_cat    6

我希望能够将它们分组为一个表,如下所示:

ID  | total
dog    6
cat    15

如果我在没问题的ID之前留下_。是否可以进行groupby查询,在其中可以对'_%ID%'进行分组?

1 个答案:

答案 0 :(得分:4)

这可以通过一些字符串操作来完成,以使_之后的所有内容以及分组依据相同的值

SELECT SUBSTRING(ID,CHARINDEX('_',ID)+1,LEN(ID)), SUM(Total) as Total 
FROM Data
GROUP BY SUBSTRING(ID,CHARINDEX('_',ID)+1,LEN(ID)) 

实时示例:http://rextester.com/BHNY98025