在sql server中如何我想将表name1都一列多行的数据转换成一行数据,但语句总是出错

在sql server中如何我想将表name1都一列多行的数据转换成一行数据,但语句总是出错我写的语句在图二中,要转换成图二语句下面的一行数据

第1个回答  2016-09-09
SELECT  STUFF(( SELECT  ',' + NAME_1
                FROM    name1
              FOR
                XML PATH('')
              ), 1, 1, '')

追问

总是出错 xml 不符

追答

详细的错误是什么?

追问

追答

哦,我知道了,你用的是sql server 2000吧,2000不支持for xml path的,你就用另外那个回答的答案吧,那个是正确的。

DECLARE @Str VARCHAR(MAX)
SELECT @Str = ISNULL(@str, '') + ',' + NAME_1
FROM name1
SELECT STUFF(@Str, 1, 1, '')

追问

还有哪个回答

答案

我就只看到一个而已,可不可以再发一次

第2个回答  2016-09-09
DECLARE @TSET TABLE (name1 VARCHAR(8));
INSERT  INTO @TSET (name1)
VALUES  ('123');
INSERT  INTO @TSET (name1)
VALUES  ('456');
INSERT  INTO @TSET (name1)
VALUES  ('abc');
--
-- SELECT  *  FROM    @TSET;
--
DECLARE @Result VARCHAR(64);
SELECT  @Result=ISNULL(@Result,'')+','+name1
FROM    @TSET;
SET @Result=STUFF(@Result,1,1,'');
SELECT  @Result;

追问

不懂你什么意思

追答

我只是给出了一个例子,怎样把列转为以逗号分隔的一个字符串,供参考。

本回答被网友采纳
相似回答