多条记录合并成一条记录

原数据结构


需要的结果

 

SQL语句

 

 1
 2 if   exists ( select   *   from  sysobjects  where  id  =   object_id ( ' Page ' and  type = ' u '  )
 3      drop   table  Page
 4
 5 create   table  Page
 6 (
 7     PageID  int   primary   key ,
 8     PageText  nvarchar ( 4000 )
 9 )
10
11 declare   @bookid   nvarchar ( 10 )
12 declare   @sql   nvarchar ( 4000 )
13
14
15 -- 定义游标
16 DECLARE  Book_Cursor  CURSOR   FOR   SELECT  BookID  From  BookInfo  order   by  bookid
17 open  Book_Cursor
18 FETCH   NEXT   FROM  Book_Cursor  Into   @bookid
19 WHILE   @@FETCH_STATUS   =   0
20 BEGIN
21 -- print @bookid
22
23 set   @sql = '
24 insert into Page
25 SELECT *
26 FROM(
27     SELECT DISTINCT pageid FROM Areainfo_ ' + @bookid + '
28 )AA
29 OUTER APPLY(
30     SELECT 
31         [values]= STUFF(REPLACE(REPLACE(
32             (
33 SELECT [Text] = 
34 CASE 
35 WHEN [TextReplace] IS NOT NULL THEN [TextReplace]
36 WHEN [TextReceive] IS NOT NULL THEN [TextReceive]
37 WHEN [TextProfessor] IS NOT NULL THEN [TextProfessor]
38 WHEN [TextLandscape] IS NOT NULL THEN [TextLandscape]
39 WHEN [TextPortrait] IS NOT NULL THEN [TextPortrait]
40 WHEN [TextRecension] IS NOT NULL THEN [TextRecension]
41 WHEN [TextSecond] IS NOT NULL THEN [TextSecond]
42 ELSE [TextFirst]
43 END 
44 FROM textinfo_ ' + @bookid + '  as t left join Areainfo_ ' + @bookid + '  as a ON a.areaid=t.areaid WHERE pageid = AA.pageid order by pageid
45                FOR XML AUTO
46             ), '' <t Text=" '' '''' ),  '' "/> '' '''' ), 1, 1, '''' )
47 )N '
48 -- print @sql
49 exec ( @sql )
50 FETCH   NEXT   FROM  Book_Cursor  Into   @bookid
51 end
52 close  Book_Cursor
53 deallocate  Book_Cursor
54
55 select   *   from  page

 

 

 

转载于:https://www.cnblogs.com/warrior/archive/2009/06/16/1504374.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值