今天在sqlserver2012上遇到一个分析需求,用到动态列转行,记录一下:
create table t1 (id int,value varchar(100)); insert into t1 values(1,'a,b,c'); insert into t1 values(2,'a,b,c,d,e'); insert into t1 values(3,'a,b,c,d,e,f,g'); select * from t1;
1 a,b,c 2 a,b,c,d,e 3 a,b,c,d,e,f,g
SELECT a.id,b.[values] FROM ( SELECT id,[VALUE] = CONVERT(XML , '<v>' + REPLACE(value , ',' , '</v><v>') + '</v>') FROM t1 ) a OUTER APPLY ( SELECT [values] = N.v.value('.' , 'nvarchar(max)') FROM a.[value].nodes('/v') N ( v ) ) b
1 a 1 b 1 c 2 a 2 b 2 c 2 d 2 e 3 a 3 b 3 c 3 d 3 e 3 f 3 g
另外,要注意,如果value字段中有诸如&等在xml为特殊字符的字符,需要注意使用CONVERT(XML时候会报错,可以先将这些字符替换成其他的,在最终结果中再替换回来。
相关推荐
SQL Server 列转行代码,供大伙参考
SqlServer列转行的另一种方式!
sqlserver使用UNPIVOT函数列转行
关于SQL SERVER 数据库中列转行的研究 :两种不同方法的比较,代码效率的比较
sql列转行以及行转列的通用存储过程!mssqlserver版本!
sqlserver 实现 行转列 split 分割的函数,具体使用方法写有在文件里。
sql2005列转行存储过程代码,此代码分静态列表列转行和动态列表列转行,本代码在sql2005上测试通过。
可以把一列转成一行…… 分隔符默认为英文逗号,也可以转成INSERT 中VALUES()后面的单引号加逗号...以前用T-SQL时,总是把一列复制到EXCEL中,转置,然后复制到记本事中,把一空格替换成逗号……,这个工具可以直接搞定
SqlServer如何进行行转列和列转行方法
可根据关键字符将一列分成多行显示,例如 A B 1 1.1.2 拆分成 1 1 1 1 1 2 进行相关的显示
sql行转列_列转行问题.
列转行行转列
Sql Server里面的行转列,列转行
sql列转行用法实例,动静态脚本.适合新手学习
SQL Server 将某一列的值拼接成字符串示例
Sql Server时间函数实用大全,欢迎下载!
sqlserver 行转成列 sqlserver 把行转成列 sqlserver 把行转成列
sql server 用于行转列,省得各位去找语句,select to_char(wm_concat('''' || valuelabel || '''')) name from (select distinct t.valuelabel from structuredrecruit t) select * from (select t.uhid, t....
SQL2005的安装问题汇总 SQL2005的安装问题汇总
分别讲述了SQLServer和Oracle行列转换的两种方式,可以通过SQL实现,也可通过关键字搞定; 还可以看到Oracle与SQLServer关键字用法的差异。