当前位置:首页 > 系统运维 > 正文内容

SQL server合并分拆表的实际应用代码

a8116255316年前 (2010-06-18)系统运维14

以下的文章主要向大家描述的是SQL server合并分拆表的实际操组 *** 的描述,本文是以SQL server合并分拆表的实际操作的应用代码的方式来引出其实际操作步骤,以下就是文章的主要内容描述。

合并分拆表

(Roy)生成測試數據

if not object_id('Tab') is null  drop table Tab  go  Create table Tab([Col1] int,[Col2] nvarchar(1))  Insert Tab  select 1,N'a' union all  select 1,N'b' union all  select 1,N'c' union all  select 2,N'd' union all  select 2,N'e' union all  select 3,N'f'  Go 

合并表:

SQL2000用函数:

go  if object_id('F_str') is not null  drop function F_Str  go  create function F_Str(@Col1 int)  returns nvarchar(100)  as  begin  declare @S nvarchar(100)  select @S=isnull(@S+',','')+Col2 from Tab where Col1=@Col1  return @S  end  go  Select distinct Col1,Col2=dbo.F_Str(Col1) from Tab  go  

SQL2005用XML:

*** 1:

select   a.Col1,Col2=stuff(b.Col2.value('/R[1]','nvarchar(max)'),1,1,'')  from   (select distinct COl1 from Tab) a  Cross apply  (select COl2=(select N','+Col2 from Tab where Col1=a.COl1 For XML PATH(''), ROOT('R'), TYPE))b 

*** 2:

select   a.Col1,COl2=replace(b.Col2.value('/Tab[1]','nvarchar(max)'),char(44)+char(32),char(44))  from   (select distinct COl1 from Tab) a  cross apply  (select Col2=(select COl2 from Tab where COl1=a.COl1 FOR XML AUTO, TYPE)  .query('<Tab> {for $i in /Tab[position()<last()]/@COl2 return concat(string($i),",")}  {concat("",string(/Tab[last()]/@COl2))}  </Tab>')  )b  SQL05用CTE:  ;with roy as(select Col1,Col2,row=row_number()over(partition by COl1 order by COl1) from Tab)  ,Roy2 as  (select COl1,cast(COl2 as nvarchar(100))COl2,row from Roy where row=1   union all   select a.Col1,cast(b.COl2+','+a.COl2 as nvarchar(100)),a.row from Roy a join Roy2 b on a.COl1=b.COl1 and a.row=b.row+1)  select Col1,Col2 from Roy2 a where row=(select max(row) from roy where Col1=a.COl1) order by Col1 option (MAXRECURSION 0)  

生成结果:

/*  Col1 COl2  ----------- ------------  1 a,b,c  2 d,e  3 f  (3 行受影响)  */   

以上的相关内容就是对SQL server合并分拆表的 *** 的介绍,望你能有所收获。

扫描二维码推送至手机访问。

版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。

本文链接:http://www.2345hao.cn/blog/index.php/post/21254.html

分享给朋友:

“SQL server合并分拆表的实际应用代码” 的相关文章

windows 7系统开机提示press any key to restart的故障分析及解

windows 7系统开机提示press any key to restart的故障分析及解

Windows 7 64位系统开机后提示"press any key to restart",无法进入系统了,具体现象如下所示: 故障分析: 故障的主要原因还是硬盘的问题,可以先检查是不是接触不良或坏了,进行修复或更换即可。 解决方法: 1、开机按F8不动到高级选项出现在松手,选“...

各个都很实用:windows 7系统电脑日常小技巧

各个都很实用:windows 7系统电脑日常小技巧

在使用Windows 7的时候很多用户对于系统的很多功能并不是很了解,也正是因为这样的不了解导致很多用户在使用Win 之后并不能体验Windows 7的功能便携和强大功能,导致很多用户对于Windows 7的认识还是比较模糊,不过为了让更多的朋友了解Windows 7的特点和便携应用,今天就为大家汇...

微软今天正式停止对windows 7的主流支持

微软今天正式停止对windows 7的主流支持

北京时间1月13日消息,根据计划,微软将于2015年1月13日正式结束对Windows 7SP1的“主流支持”,而这也标志着“扩展支持”阶段的开始,这个阶段将于2020年1月14日结束。 2013年10月份,微软终止销售独立的Windows 7系统安装包,并要求制造商于2014年10月份停止生...

windows 7旗舰版系统提示应用程序错误代码0xc0000409的故障原因

windows 7旗舰版系统提示应用程序错误代码0xc0000409的故障原因

问题现象,具体如下所示:  故障分析: 一般来说,出现这种情况是因为电脑误删系统文件或者是系统文件被顽固木马破坏。       解决方法: 1、下载360安全卫士,找到里面的急救箱开始急救,然后进行修复,完成后重新启动; 2、下载瑞...

windows 7系统下Windows服务被流氓软件注册怎么办?Windows服务

windows 7系统下Windows服务被流氓软件注册怎么办?Windows服务

解决方法: 其实处理这些使用流氓软件,需要将相关的.exe文件删除,使它不能再运行,或者直接清除这个服务本身,使计算机重启的时候,它不会再启动。比如Hijackthis扫描,在扫描日志中,一般会把非Windows系统的服务以023的方式列出来,如下面这段: O23 - ...

windows 7系统开机提示Windows驱动器未就绪的故障原因及解决方法

windows 7系统开机提示Windows驱动器未就绪的故障原因及解决方法

 故障分析: 主要原因应该是不存在软盘驱动器或驱动器未安装,找到故障原因后,Windows 7 32位系统只要将软盘驱动器禁用就可以了。 解决措施: 1、右键点击计算机,选择管理,打开计算机管理窗口; 2、在计算机管理中,找到设备管理器,在右边的软盘控制器中右击,选择卸载即可。 以...