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

sql 多行、一行 互转

时间:2018-09-02 12:34:16      阅读:196      评论:0      收藏:0      [点我收藏+]

标签:alt   select   view   value   nvarchar   英语   font   nbsp   table   

原始数据:

技术分享图片

期望数据:

技术分享图片

技术分享图片
1 IF OBJECT_ID(temp_20170701,u) IS NOT NULL DROP TABLE temp_20170701
2 
3  CREATE TABLE temp_20170701 (
4  ID INT PRIMARY KEY IDENTITY(1,1),
5  NAME  NVARCHAR(50),
6  Subjectname NVARCHAR(50),
7  Score INT
8  )
View Code
技术分享图片
 1 INSERT dbo.temp_20170701( Name, subjectname, Score )
 2 SELECT A,语文,20 UNION
 3 SELECT A,数学,30 UNION
 4 SELECT A,英语,40 UNION
 5 SELECT B,语文,50 UNION
 6 SELECT B,数学,60 UNION
 7 SELECT B,英语,70 UNION
 8 SELECT C,语文,80 UNION
 9 SELECT C,数学,90 UNION
10 SELECT C,英语,100 UNION
11 SELECT D,英语,100
View Code
技术分享图片
1 SELECT Name ,Score=STUFF((SELECT ,+CONVERT(NVARCHAR(max),Score) FROM temp_20170701 t1 WHERE t1.NAME=t2.NAME FOR XML PATH(‘‘)),1,1,‘‘)
2 FROM temp_20170701 t2 GROUP BY t2.NAME
View Code
 

原始数据:

技术分享图片

期望数据:

技术分享图片

 

技术分享图片
1 CREATE TABLE temp_20170702 (
2 ID INT PRIMARY KEY IDENTITY(1,1),
3 NAME NVARCHAR(50),
4 Score varchar(100)
5 )
View Code
技术分享图片
1 insert temp_20170702 (Name,Score)
2 select A,30,40,20 union
3 select B,60,70,50 union
4 select C,90,100,80 union
5 select D,100
View Code
技术分享图片
1 select a.NAME,b.value as Score from (
2 select *,s=CONVERT(xml,<root><v>+REPLACE(Score,,,</v><v>)+</v></root>) from temp_20170702 
3 ) a outer apply 
4 (select value=n.s.value(.,varchar(100)) from a.s.nodes(/root/v) n(s)) b
View Code

 

sql 多行、一行 互转

标签:alt   select   view   value   nvarchar   英语   font   nbsp   table   

原文地址:https://www.cnblogs.com/xiao-sheng/p/9573295.html

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