当前位置: 首页 > news >正文

sql server 行转列及列转行

       图1 

       图2

1.行转列 (图1->图2)

1.方法一 (数据库通用),使用max 加case when 函数

-- 行转列  图1->图2
SELECT name,MAX(CASE WHEN subject='语文' THEN score ELSE 0 END) AS "语文",MAX(CASE WHEN subject='数学' THEN score ELSE 0 END) AS "数学",MAX(CASE WHEN subject='英语' THEN score ELSE 0 END) AS "英语"
FROM student
GROUP BY name;

运行结果: 

2.方法二,使用PIVOT

SELECT   name,  [语文],  [数学],  [英语]  
FROM   
(  SELECT name, subject, score  FROM student  
) AS SourceTable  
PIVOT  
(  MAX(score) -- 使用 MAX 因为 PIVOT 需要一个聚合函数  FOR subject IN ([语文], [数学], [英语])  
) AS PivotTable;

运行结果:  

 3.测试表及数据


CREATE TABLE student (  NAME VARCHAR(50),  SUBJECT VARCHAR(50),  SCORE INT 
);INSERT INTO student (NAME, SUBJECT, SCORE) VALUES  
('小明', '语文', 96),  
('小明', '数学', 98),    
('小明', '英语', 95), 
('大花', '语文', 92), 
('大花', '数学', 96),  
('大花', '英语', 98);   

 2.列转行(图2->图1)

1.方法一 (数据库通用)使用union 来拼接

SELECT NAME, '语文' AS subject , MAX("语文") AS score
FROM student_scores GROUP BY NAME
UNION 
SELECT NAME, '数学' AS subject , MAX("数学") AS score
FROM student_scores GROUP BY NAME
UNION
SELECT  NAME, '英语' AS subject , MAX("英语") AS score
FROM student_scores GROUP BY NAME;

运行结果: 

 

2.方法二,使用UNPIVOT

​​-- 在SQL Server中使用的UNPIVOT示例  
SELECT   name,  subject,  score  
FROM   
(  SELECT name, [语文], [数学], [英语]  FROM student_scores  
) AS SourceTable  
UNPIVOT  
(  score FOR subject IN ([语文], [数学], [英语])  
) AS UnpivotTable;

运行结果: 

3.测试表及数据

CREATE TABLE student_scores (  name VARCHAR(50),  语文 INT, 数学 INT,   英语 INT 
);INSERT INTO student_scores (name, 语文, 数学, 英语) VALUES  
('大花', 92, 96, 98),  
('小明', 96, 98, 95);


http://www.mrgr.cn/news/53155.html

相关文章:

  • 内存卡提示需要格式化:高效数据恢复指南
  • 关于人工智能你不能不知道发展史
  • 滴水逆向三期笔记与作业——02C语言——12 指针(2)
  • 儿童鞋垫特殊哥
  • Google play开发者账号被封,申诉就有机会,别不信
  • 这家一汽集团供应商终止,分红超净利润一半,业绩有下滑趋势
  • 软件产品国际化:前后端及App多语言版本解决方案(超详细实现过程)
  • IEEE捡漏期刊!IF不高,但贵为中科院2区TOP刊,潜力巨大!
  • 布隆过滤器 不适用的场景
  • 双十一性价比高的宠物空气净化器推荐,希喂、米家、霍尼韦尔测评
  • 开发指南074-自适应屏幕
  • echarts大屏常用图表-饼图
  • 精华帖分享 | 从华泰研报出发,开启人工智能炼丹篇章!
  • Oracle T5-2 本地磁盘做硬件RAID 1
  • c++的哈希表、哈希桶的介绍与实现
  • 一种系留气球快速放气装置
  • 骨传导耳机哪个牌子最好?买前必看五大骨传导耳机测评分享
  • TapData 知识库 | 一文吃透数据整合(Data Consolidation)
  • 5555字的程序员脱单攻略,看了后悔一天,不看后悔一辈子!
  • 【计网笔记】数据链路层