重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

oracle怎么行列装换,excle里面如何换行

oracle 行和列转换

如果你要做转换查询,真心劝你不要这么干,我的写法很麻烦,一张表不停的查询,逻辑读肯定搞得要死。

目前创新互联公司已为超过千家的企业提供了网站建设、域名、网站空间、网站托管、服务器租用、企业网站设计、天坛街道网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

如果是往下面这张表灌数,那么可以写循环,慢慢来一行对应一列,可以根据表的列和数据的对应关系往里面灌,这个相对简单些。

我的写法大概是子查询+union all 上面为a表

那么就写为select ‘第一季度' 销售额,(select 第一季度销售额 from a where 产品名称='奶酪')奶酪,(select 第一季度销售额 from a where 产品名称='啤酒') from dual

union all

还像上面那么写,写第二季度

union all

第三季度

union all

第四季度

一张表重读查询8次,如果表很大,我估计机器会宕掉的。

因为单独从一列来看也可以理解为列转行,所以用case when写也可以,这么写似乎读取的次数会少些,不过要用到group by分组,天知道二者最后谁的消耗大。不过如果表很大的话,还是那句话,建议新建表然后灌数,这么直接查,真的会死掉的。

以上为个人建议,如果找到什么好写法,也可以研究下。

oracle 行列转换问题

方法一:最好理解

select t.指标名

,sum(decode(t.工厂,'一厂',t.指标值,0)) 一厂

,sum(decode(t.工厂,'二厂',t.指标值,0)) 二厂

from 数据表 t

group by t.指标名

方法二:用oracle11g新特性Pivot,也很好理解

select 指标名,"一厂","二厂"

from 数据表 t

pivot (sum(t.指标值) for "工厂" in ('一厂' as "一厂",'二厂' as "二厂"))

怎样将oracle中的列变成行

固定列数的行列转换如

student subject grade

---------------------------

student1 语文 80

student1 数学 70

student1 英语 60

student2 语文 90

student2 数学 80

student2 英语 100

转换为

语文 数学 英语

student1 80 70 60

student2 90 80 100

语句如下:

select student,sum(decode(subject,'语文', grade,null)) "语文",

sum(decode(subject,'数学', grade,null)) "数学",

sum(decode(subject,'英语', grade,null)) "英语"

from table

group by student

2、不定列行列转换如

c1 c2

--------------

1 我

1 是

1 谁

2 知

2 道

3 不

......

转换为

1 我是谁

2 知道

3 不

这一类型的转换必须借助于PL/SQL来完成,这里给一个例子

CREATE OR REPLACE FUNCTION get_c2(tmp_c1 NUMBER)

RETURN VARCHAR2

IS

--用于返回值

Col_c2 VARCHAR2(4000);

BEGIN

FOR cur IN (SELECT c2 FROM t WHERE c1=tmp_c1) LOOP

Col_c2 := Col_c2||cur.c2;

END LOOP;

Col_c2 := rtrim(Col_c2,1);

RETURN Col_c2;

oracle行列转换

select id,max(姓名) 姓名,max(身份证号) 身份证号,max(性别) 性别,max(出生日期) 出生日期,max(年龄) 年龄 from

(select

id,

case when name='姓名' then text end 姓名,

case when name='身份证号' then text end 身份证号,

case when name='性别' then text end 性别,

case when name='出生日期' then text end 出生日期,

case when name='年龄' then text end 年龄 from 表)

group by id


分享名称:oracle怎么行列装换,excle里面如何换行
文章路径:http://cqcxhl.com/article/hohegd.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP