行转列/列转行

Posted bonniewss

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了行转列/列转行相关的知识,希望对你有一定的参考价值。

行转列:

select t.*, t.rowid from TEST1 t
 
ID  C1    C2   C3
1  小红  数学  10  
2  小红  语文  20  
3  小栏  数学  15  
4 小栏 语文 25
 
--test1
SELECT C1,to_char(WM_CONCAT(C2)) c2 FROM TEST1 group by c1
--结果:
 C1      C2
小红 数学,语文
小栏 数学,语文
 
 
--test2
select c1, max(math) as math, max(yuwen) as yuwen
  from (SELECT c1,
               case
                 when c2 = ‘数学‘ then
                  c3
               end as math,
               case
                 when c2 = ‘语文‘ then
                  c3
               end as yuwen
          from test1)
 group by c1
--结果: 
 C1  数学 语文
小红 10 20
小栏 15 25
 
--test3
select *
  from (select c2, c3 from test1) pivot(sum(c3) for c2 in(‘数学‘, ‘语文‘))
--结果:
数学  语文
 25    45
 
--test4
select *
  from (select c1, c2,c3 from test1) pivot(max(c3) for c2 in(‘数学‘, ‘语文‘))
--结果:
 C1  数学 语文
小红 10 20
小栏 15 25

以上是关于行转列/列转行的主要内容,如果未能解决你的问题,请参考以下文章

SAS行转列&&列转行

Oracle列转行,行转列

hive关于行转列,列转行的使用

行转列-列转行_查询

SQL2000行转列于列转行问题,急~~~ (部门是不确定几个的)

hive的行转列和列转行