来源: SqlServer中查询出多条记录变成一个记录(行变列) – 音乐啤酒 – 博客园
碰到一个SQL问题,不知道怎么搞,问了群里面的一个SQL高手 ,夕颜大哥,他使用短短一句SQL就实现我的要求,太牛了。原来sql还可以这么神奇,唉,还是怪自己sql不精通。
一个表A,两个字段ID,name,一个ID可能对应多name,要求根据一个ID查询出对应的name,但是不是以多行的形式显示出来,而是以一个行的形式出来,多个name以,分割。
比如 数据
i name
1 a
1 b
1 c
应该查询来的结果是; [a,b,c 1]
sql是这样写的
DECLARE @names varchar(1000)
SET @names = ”
SELECT @names=@names+ISNULL(name, ”)+’,’
FROM A
WHERE id = 1
select @names
用的是sql的所谓自拼接,这是夕颜的说法,大家研究一下,感觉很有意思的。