我有一个包含一些记录的表,其中一列代表每条记录的组:
id | group
1 abc_xxx
2 abc_yyy
3 def_ooo
4 def_ppp
5 ghi_jjj
6 ghi_kkk
当我进行查询并按组列对行进行分组时,我得到
abc_xxx
abc_yyy
def_ooo
def_ppp
ghi_jjj
ghi_kkk
然而,这不是我需要的正确输出,我需要得到类似的东西:
abc
def
ghi
因为它代表了组列下记录的真实分类。所以我在 SQL Server 2005 中寻找一种方法,我可以使用它。
最佳答案
使用 SUBSTRING或 LEFT (这更简单但非标准):
SELECT
SUBSTRING([group], 1, 3) AS [group]
FROM table
GROUP BY
SUBSTRING([group], 1, 3)
或者,
SELECT
LEFT([group], 3) AS [group]
FROM table
GROUP BY
LEFT([group], 3)
分组时通常是为了聚合一些东西,所以我猜你正在寻找类似的东西:
SELECT
SUBSTRING([group], 1, 3) AS [group],
COUNT(*) AS [count]
FROM table
GROUP BY
SUBSTRING([group], 1, 3)
关于sql - 按子字符串对sql结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14654965/