版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010944388/article/details/79403493
--1:创建一个表来测试
CREATE TABLE Test_table (seqno INT ,field1 NVARCHAR(30))
--2:下面是将表Test_table分别插入5笔数据
INSERT INTO Test_table (seqno,field1)VALUES('1',N'列转行1')
INSERT INTO Test_table (seqno,field1)VALUES('2',N'列转行2')
INSERT INTO Test_table (seqno,field1)VALUES('3',N'列转行3')
INSERT INTO Test_table (seqno,field1)VALUES('4',N'列转行4')
INSERT INTO Test_table (seqno,field1)VALUES('5',N'列转行5')
SELECT * FROM Test_table (NOLOCK)--3:查询结果,目前是一列下来。
seqno field1
----------- ------------------------------
1 列转行1
2 列转行2
3 列转行3
4 列转行4
5 列转行5
(5 行受影响)
--:4:如果我们想把上面查询出field1字段转成一行,且每个值用逗号分隔,那该多好!语法如下:
SELECT STUFF((SELECT ','+field1 FROM Test_table (NOLOCK) for xml path('')),1,1,'')
--5:下面是field1字段列转成行,且每个值用逗号分隔
列转行1,列转行2,列转行3,列转行4,列转行5
(1 行受影响)
--6:是不是帮了大大的忙?今天刚好需要将一个临时表的单个字段转成行且用逗号分隔,网上找了一堆资料,其实就是这么简单的一句,留下来备用!
--7:drop table Test_table 测试完就可以删掉这个表(前提是这个表是刚刚你才新建的!)