SQL行转列

简介: SQL行转列是比较经典的问题: 比如有如下数据表,有如下某一款号(表1):    颜色  尺码  库存     红色    S    10    红色    M    80    白色    L    50    白色    S    60 要将上面的表转化为如下格式(表2):  颜...

SQL行转列是比较经典的问题:

比如有如下数据表,有如下某一款号(表1): 

  颜色  尺码  库存  

  红色    S    10 

  红色    M    80 

  白色    L    50 

  白色    S    60

要将上面的表转化为如下格式(表2): 

颜色    S  M  L 

红色  10  80  0  

白色  60  0  50

 

动态sql:

create  table #tbl_0

(

   color nvarchar(12),

   nsize nchar(1),

   store int

)

insert into #tbl_0

select 'red',    'S',    '10' union all 

select  'red',    'M',    '80'  union all

select 'white',    'L',    '50'  union all

select  'white',    'S',    '60'

select * from #tbl_0

--结果

--red    S    10

--red    M    80

--white    L    50

--white    S    60

 

declare @sql varchar(4000)

set @sql = ' select color,'

select @sql= @sql+'isnull(sum(case nsize when '''+ns+''' then isnull(store,0) end),0) '''+ns+''','

    from (select 'S' as ns union all select 'M' union all select 'L') a

set @sql = stuff(@sql,len(@sql),1,'')

set @sql=@sql+ ' from #tbl_0 group by color'

exec(@sql)

--结果

--red    10    80    0

--white    60    0    50

drop table #tbl_0

 

静态sql:

select color,

isnull(sum(case nsize when 'S' then isnull(store,0) end),0) 'S',

isnull(sum(case nsize when 'M' then isnull(store,0) end),0) 'M',

isnull(sum(case nsize when 'L' then isnull(store,0) end),0) 'L'

from #tbl_0 group by color

 

 

目录
相关文章
|
3月前
|
SQL 流计算
Flink SQL提供了行转列的功能,可以通过使用`UNPIVOT`操作来实现
【1月更文挑战第1天】Flink SQL提供了行转列的功能,可以通过使用`UNPIVOT`操作来实现
118 0
|
8月前
|
SQL 前端开发 关系型数据库
pg库实现sql行转列
这个主题还是比较常见的,行转列主要适用于对数据作聚合统计,如统计某类目的商品在某个时间区间的销售情况。列转行问题同样也很常见。
225 0
pg库实现sql行转列
|
SQL Oracle 关系型数据库
【SQL开发实战技巧】系列(二十四):数仓报表场景☞通过执行计划详解”行转列”,”列转行”是如何实现的
本篇文章讲解的主要内容是:***目前Oracle支持的行列互换有两种方式:case when、pivot\unpivot,我将通过几个案例来给大家详解如何通过这两种方式实现“行转列”,“列转行”的需求,并通过执行计划看case when、pivot\unpivot二者的底层逻辑关系以及效率上的影响。***
【SQL开发实战技巧】系列(二十四):数仓报表场景☞通过执行计划详解”行转列”,”列转行”是如何实现的
|
SQL
SQL中的行转列和列转行
SQL是IT行业很多岗位都要求具备的一项能力,对于数据岗位而言更是如此,甚至说扎实的SQL基础也往往是入职这些岗位的必备技能。而在SQL面试中,一道出镜频率很高的题目就是行转列和列转行的问题,可以说这也是一道经典的SQL题目,本文就这一问题做以介绍分享。
833 0
SQL中的行转列和列转行
|
SQL
行转列【死磕sql】
行转列【死磕sql】
137 0
行转列【死磕sql】
|
SQL
重温SQL行转列,性能又双叒提升了
重温SQL行转列,性能又双叒提升了
302 0
重温SQL行转列,性能又双叒提升了
|
SQL
SQL中行转列、列转行
SQL中行转列、列转行
215 0
SQL中行转列、列转行
【每日SQL打卡】​​​​​​​​​​​​​​​DAY 19丨行转列【难度中等】​
【每日SQL打卡】​​​​​​​​​​​​​​​DAY 19丨行转列【难度中等】​
|
SQL Oracle Java
建议收藏丨sql行转列的一千种写法!!
建议收藏丨sql行转列的一千种写法!!
建议收藏丨sql行转列的一千种写法!!
|
SQL 存储 数据库
重温SQL Server的行转列和列转行,面试常考题
行转列,列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法比一系列复杂的SELECT…CASE 语句中所指定的语法更简单、更具可读性。下面我们通过几个简单的例子来介绍一下列转行、行转列问题。
重温SQL Server的行转列和列转行,面试常考题