码迷,mamicode.com
首页 > 数据库 > 详细

SQL SERVER 拆分列为多行

时间:2014-12-12 13:00:34      阅读:312      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   ar   color   sp   on   div   art   

--创建测试表
create table #temp (seq int identity,names varchar(200))
insert into #temp(names)
values(张三,李四),
(中国,美国,巴西),
(深圳,上海,北京,广州,哈尔滨),
(足球,篮球,乒乓球,台球)

 

目的是要将用逗号分隔的names列拆分为多行,最终要产生的结果为:

1 张三

1 李四
2 中国
2 美国
2 巴西
3 深圳
3 上海
3 北京
3 广州
3 哈尔滨
4 足球
4 篮球
4 乒乓球
4 台球

 

 1 ;with cte as(
 2 select 0 as n
 3 union all
 4 select N+1 from cte where n<100
 5 )
 6 ,idx as (
 7 select a.seq,b.n,ROW_NUMBER() over (partition by a.seq order by b.n) as id,,+a.names+, as names
 8 from #temp a
 9     inner join cte b on b.n<=len(,+a.names+, )
10 where SUBSTRING(,+a.names+,,b.n,1)=,
11 )
12 select a.seq,substring(a.names,a.n+1,b.n-a.n-1) as name
13 from idx a
14     inner join idx b on a.seq=b.seq and a.id=b.id-1

 

SQL SERVER 拆分列为多行

标签:style   blog   io   ar   color   sp   on   div   art   

原文地址:http://www.cnblogs.com/champaign/p/4159309.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!