将值组合在一起

时间:2013-09-04 17:45:37

标签: sql sql-server-2008

我有另一组问题。

我的表中的值可以如下:

name1
name2
name1;name1
name1
name2;name2;name2

我需要将这个值组合起来计算这些值。对不起,这有点难以解释,但基本上我需要合并为一个值是'name1'还是'name1; name1'或'name1; name1; name1'(可以重复任意次数)。所以结果将是

name1  - 3 
name2  - 2

谢谢。

2 个答案:

答案 0 :(得分:0)

如果您的所有值都与示例中的值相似,请尝试以下操作:

select
    left(t.col, 5), count(*)
from <your table> as t
group by left(t.col, 5)

答案 1 :(得分:0)

这允许不同名称的长度

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)

/ 删除最后一个字符,即;我们添加了 /