日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQLserver合并分拆表的實際應用代碼

以下的文章主要向大家描述的是SQL server合并分拆表的實際操組方法的描述,本文是以SQL server合并分拆表的實際操作的應用代碼的方式來引出其實際操作步驟,以下就是文章的主要內(nèi)容描述。

創(chuàng)新互聯(lián)專注于中大型企業(yè)的成都網(wǎng)站設計、成都網(wǎng)站制作和網(wǎng)站改版、網(wǎng)站營銷服務,追求商業(yè)策劃與數(shù)據(jù)分析、創(chuàng)意藝術與技術開發(fā)的融合,累計客戶近千家,服務滿意度達97%。幫助廣大客戶順利對接上互聯(lián)網(wǎng)浪潮,準確優(yōu)選出符合自己需要的互聯(lián)網(wǎng)運用,我們將一直專注品牌網(wǎng)站設計和互聯(lián)網(wǎng)程序開發(fā),在前進的路上,與客戶一起成長!

合并分拆表

(Roy)生成測試數(shù)據(jù)

 

 
 
 
  1. if not object_id('Tab') is null  
  2. drop table Tab  
  3. Go  
  4. Create table Tab([Col1] int,[Col2] nvarchar(1))  
  5. Insert Tab  
  6. select 1,N'a' union all  
  7. select 1,N'b' union all  
  8. select 1,N'c' union all  
  9. select 2,N'd' union all  
  10. select 2,N'e' union all  
  11. select 3,N'f'  
  12. Go 

 

合并表:

SQL2000用函數(shù):

 

 
 
 
  1. go  
  2. if object_id('F_Str') is not null  
  3. drop function F_Str  
  4. go  
  5. create function F_Str(@Col1 int)  
  6. returns nvarchar(100)  
  7. as  
  8. begin  
  9. declare @S nvarchar(100)  
  10. select @S=isnull(@S+',','')+Col2 from Tab where Col1=@Col1  
  11. return @S  
  12. end  
  13. go  
  14. Select distinct Col1,Col2=dbo.F_Str(Col1) from Tab  
  15. go  

 

SQL2005用XML:

方法1:

 

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

 

方法2:

 

 
 
 
  1. select   
  2. a.Col1,COl2=replace(b.Col2.value('/Tab[1]','nvarchar(max)'),char(44)+char(32),char(44))  
  3. from   
  4. (select distinct COl1 from Tab) a  
  5. cross apply  
  6. (select Col2=(select COl2 from Tab where COl1=a.COl1 FOR XML AUTO, TYPE)  
  7. .query(' 
  8. {for $i in /Tab[position()
  9. {concat("",string(/Tab[last()]/@COl2))}  
  10. ')  
  11. )b  
  12. SQL05用CTE:  
  13. ;with roy as(select Col1,Col2,row=row_number()over(partition by COl1 order by COl1) from Tab)  
  14. ,Roy2 as  
  15. (select COl1,cast(COl2 as nvarchar(100))COl2,row from Roy where row=1   
  16. union all   
  17. 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)  
  18. select Col1,Col2 from Roy2 a where row=(select max(row) from roy where Col1=a.COl1) order by Col1 option (MAXRECURSION 0)  

 

生成結果:

 
 
 
  1. /*  
  2. Col1 COl2  
  3. ----------- ------------  
  4. 1 a,b,c  
  5. 2 d,e  
  6. 3 f  
  7. (3 行受影響)  
  8. */  
  9.  

 

以上的相關內(nèi)容就是對SQL server合并分拆表的方法的介紹,望你能有所收獲。

【編輯推薦】

  1. SQL Server 字符串在實際操作中的注意事項
  2. SQL Server 連接字符串的一些聲明
  3. SQL Server 連接字符串的實現(xiàn)步驟
  4. SQL Server數(shù)據(jù)庫中可用格式字符串干什么?
  5. SQL server 2000 標準版、企業(yè)版的不同之處

文章標題:SQLserver合并分拆表的實際應用代碼
分享鏈接:http://www.dlmjj.cn/article/cdejdso.html