如果计数(值)> 1时,将所有的值成一个单一的细胞[重复](If count(values)

2019-09-21 01:47发布

可能重复:
SQL Server的:我可以用逗号分隔多行合并到一列?

我想所有记录在某一领域(从另一列每值)组合成单个细胞,如果记录的数量是大于1。例如,如果我有以下代码

SELECT city, count(zoo name) AS 'count of zoo name' FROM mytable

这将产生以下结果

最初的表看起来像这样

由于这两种亚特兰大和纽约有一个以上的动物园和东京只有一个动物园,最后的结果应该像

我将如何去这样做呢? 我想过使用枢轴结构,但会为每个可能值的新列。 我也必须每一个可能的动物园名的名字写入了支点。 这是不好的形式,因为实际的数据有“动物园的名字”比上面的更可能值。

Answer 1:

您可以使用XML路径Concat的列值

;With Cte(city,concat) as
(
    select city, (select a.Zoo+','
    from Sample a
    where a.city=b.city
    for XML PATH ('') )  concat
    from Sample b
    group by city
 )
Select city,left(concat, len(concat) -1) from cte

检查结果在SQL小提琴



文章来源: If count(values) > 1, combine all values into a single cell [duplicate]