如何使用String作为分隔符将列的结果连接起来

时间:2014-03-31 02:48:25

标签: sql-server

我的表格结果如下: -

Name           Cat Type
Waugh, John       1
Waugh, John       2
Sampras, Jim      3
Sampras, Jim      4

我想要的是:

Name            Cat Type
Waugh, John       1, 2 
Sampras, Jim      3, 4

我怎样才能做到这一点?非常感谢任何想法和建议!!

3 个答案:

答案 0 :(得分:0)

对于t-sql,最好的答案是使用XML PATH或带有数字表的cte。例如,请参阅此问题:Concatenate many rows into a single text string?

答案 1 :(得分:0)

只需这样做:

SELECT
      T1.Name, 
      [Cat Type] = STUFF((
          SELECT ',' + convert(varchar(10),T2.[Cat Type])
          FROM TableName T2
          WHERE T1.Name = T2.Name
          FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '')
FROM TableName T1
GROUP BY T1.Name
ORDER BY [Cat Type]

结果:

NAME            CAT TYPE
Waugh, John     1,2
Sampras, Jim    3,4

请参阅SQL Fiddle中的结果。

答案 2 :(得分:0)

如果您只有两个值,则可以执行以下操作:

select t.name,
       min(t.CatType) + ',' + max(t.CatType) as CatType
from table t
group by t.name;

这假设CatType是一个字符串变量。如果是数字,则必须将其转换为字符串。