我有另一个问题组。
我的表中的值可以如下:
name1
name2
name1;name1
name1
name2;name2;name2
我需要结合这些值来获取该字段的计数。抱歉,这有点难以解释,但基本上我需要将一个值组合成一个总数,无论值是 'name1' 还是 'name1;name1' 还是 'name1;name1;name1' (可以重复任意次数)。所以结果是
name1 - 3
name2 - 2
谢谢你。
我有另一个问题组。
我的表中的值可以如下:
name1
name2
name1;name1
name1
name2;name2;name2
我需要结合这些值来获取该字段的计数。抱歉,这有点难以解释,但基本上我需要将一个值组合成一个总数,无论值是 'name1' 还是 'name1;name1' 还是 'name1;name1;name1' (可以重复任意次数)。所以结果是
name1 - 3
name2 - 2
谢谢你。
如果您的所有值都与您的示例中的值一样,请尝试以下操作:
select
left(t.col, 5), count(*)
from <your table> as t
group by left(t.col, 5)
这允许不同名称的长度
DECLARE @STUFF AS TABLE
(MyField nvarchar(100))
INSERT INTO @Stuff VALUES ('fred;1234')
INSERT INTO @Stuff VALUES ('fred;fred')
INSERT INTO @Stuff VALUES ('bib;')
INSERT INTO @Stuff VALUES ('bob;')
INSERT INTO @Stuff VALUES ('bib;bib')
INSERT INTO @Stuff VALUES ('steve;steve')
/添加一个默认值;防止没有/的字段
UPDATE @STUFF SET MyField = MyField + ';'
select
left(t.myfield, charindex(';', T.myfield)), count(*)
from @Stuff as t
group by left(t.myfield, CHARINDEX(';', T.myfield))
UPDATE @STUFF SET MyField = LEFT(MyField, LEN(MyField)-1)
/删除最后一个字符,即 ; 我们添加了/