SQL 列转行、行转列

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
一、行转列
 
create  TAble  TA ( NAME     varchar (10) ,SUBJECT  varchar (10) ,RESULT   int )
  
insert  into  TA( NAME  , SUBJECT , RESULT)  values ( '张三'  '语文'  , 74)
insert  into  TA( NAME  , SUBJECT , RESULT)  values ( '张三'  '数学'  , 83)
insert  into  TA( NAME  , SUBJECT , RESULT)  values ( '张三'  '物理'  , 93)
insert  into  TA( NAME  , SUBJECT , RESULT)  values ( '李四'  '语文'  , 74)
insert  into  TA( NAME  , SUBJECT , RESULT)  values ( '李四'  '数学'  , 84)
insert  into  TA( NAME  , SUBJECT , RESULT)  values ( '李四'  '物理'  , 94)
go
  
select  from  TA
 
--方法一:使用case when end结构
select  NAME  姓名,
   max ( case  SUBJECT  when  '语文'  then  RESULT  else  end ) 语文,
   max ( case  SUBJECT  when  '数学'  then  RESULT  else  end ) 数学,
   max ( case  SUBJECT  when  '物理'  then  RESULT  else  end ) 物理
from  TA
group  by  NAME
 
--方法二:PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现
select  from  TA pivot( max (RESULT)  for  SUBJECT  in  (语文,数学,物理))a



?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
二、列转行
 
CREATE  TABLE  TB ( NAME  VARCHAR (20), 语文  INT , 数学  INT , 物理  INT )
 
INSERT  INTO  TB  VALUES ( '张三' , 88,99,89);
INSERT  INTO  TB  VALUES ( '李四' , 78,77,87);
GO
 
SELECT  FROM  TB
 
--方法一:
select  from 
( select  NAME , '语文'  AS  科目,语文  as  分数  from  TB 
  union  all
  select  NAME , '数学'  AS  科目,数学  as  分数  from  TB 
  union  all
  select  NAME , '物理'  AS  科目,物理  as  分数  from  TB
AS  t
 
--方法二:使用unpivot函数
SELECT  NAME ,科目,分数  FROM  TB UNPIVOT(分数  for  科目  in  (语文,数学,物理))b

目录
相关文章
|
3月前
|
SQL 流计算
Flink SQL提供了行转列的功能,可以通过使用`UNPIVOT`操作来实现
【1月更文挑战第1天】Flink SQL提供了行转列的功能,可以通过使用`UNPIVOT`操作来实现
115 0
|
8月前
|
SQL 前端开发 关系型数据库
pg库实现sql行转列
这个主题还是比较常见的,行转列主要适用于对数据作聚合统计,如统计某类目的商品在某个时间区间的销售情况。列转行问题同样也很常见。
222 0
pg库实现sql行转列
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(二十四):数仓报表场景☞通过执行计划详解”行转列”,”列转行”是如何实现的
本篇文章讲解的主要内容是:***目前Oracle支持的行列互换有两种方式:case when、pivot\unpivot,我将通过几个案例来给大家详解如何通过这两种方式实现“行转列”,“列转行”的需求,并通过执行计划看case when、pivot\unpivot二者的底层逻辑关系以及效率上的影响。***
【SQL开发实战技巧】系列(二十四):数仓报表场景☞通过执行计划详解”行转列”,”列转行”是如何实现的
|
SQL
SQL中的行转列和列转行
SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能。而在SQL面试中,一道出镜频率很高的题目就是行转列和列转行的问题,可以说这也是一道经典的SQL题目,本文就这一问题做以介绍分享。
832 0
SQL中的行转列和列转行
|
SQL
行转列【死磕sql】
行转列【死磕sql】
137 0
行转列【死磕sql】
|
SQL 分布式计算 Hadoop
Flink SQL 如何实现列转行?
在 SQL 任务里面经常会遇到一列转多行的需求,今天就来总结一下在 Flink SQL 里面如何实现列转行的,先来看下面的一个具体案例. 需求 原始数据格式如下: name data JasonLee [{"content_type":"flink","url":"111"},{"content_type":"spark","url":"222"},{"content_type":"hadoop","url":"333"}] data 格式化
|
SQL
重温SQL行转列,性能又双叒提升了
重温SQL行转列,性能又双叒提升了
302 0
重温SQL行转列,性能又双叒提升了
|
SQL
SQL中行转列、列转行
SQL中行转列、列转行
215 0
SQL中行转列、列转行
【每日SQL打卡】​​​​​​​​​​​​​​​DAY 19丨行转列【难度中等】​
【每日SQL打卡】​​​​​​​​​​​​​​​DAY 19丨行转列【难度中等】​
|
SQL Oracle Java
建议收藏丨sql行转列的一千种写法!!
建议收藏丨sql行转列的一千种写法!!
建议收藏丨sql行转列的一千种写法!!