成都网站建设设计

将想法与焦点和您一起共享

oracle值怎么转列,oracle转置 列转行

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列转行,行转列

oracle下可以用函数decode处理:

select 产品名称,

sum(decode(季度,'第一季度',销售额,0)) 第一季度销售额,

sum(decode(季度,'第二季度',销售额,0)) 第二季度销售额,

sum(decode(季度,'第三季度',销售额,0)) 第三季度销售额,

sum(decode(季度,'第四季度',销售额,0)) 第四季度销售额,

from 表名

group by 产品名称;

ORACLE中,如何把表中的某列的值转换成列?

select column_name

from all_tab_columns

where owner = 'ABCD'

and table_name = 'T_GDZC_ERP'

and column_name in (select oracle from t_gdzc_erp)

执行一下试试,记得把owner改成你自己的用户,不行再问我

oracle 根据某一行的值转化成列?

楼主这种 典型的行列转换问题。

Oracle 一般就通过 DECODE 或者 CASE WHEN 来处理。

SQL CREATE TABLE TEST_YLX (

2 name VARCHAR2(2),

3 zfname VARCHAR2(6),

4 tdate DATE

5 );

Table created.

SQL

SQL INSERT INTO TEST_YLX VALUES ('A', 'size1', TO_DATE('2010-02-01', 'YYYY-MM-D

D') );

1 row created.

SQL INSERT INTO TEST_YLX VALUES ('A', 'size2', TO_DATE('2010-02-01', 'YYYY-MM-D

D') );

1 row created.

SQL INSERT INTO TEST_YLX VALUES ('B', 'size1', TO_DATE('2010-02-01', 'YYYY-MM-D

D') );

1 row created.

SQL INSERT INTO TEST_YLX VALUES ('C', 'size3', TO_DATE('2010-02-01', 'YYYY-MM-D

D') );

1 row created.

SQL

SQL SELECT

2 name,

3 SUM ( DECODE(zfname, 'size1', 1, 0) ) AS size1,

4 SUM ( DECODE(zfname, 'size2', 1, 0) ) AS size2,

5 SUM ( CASE WHEN(zfname = 'size3') THEN 1

6 ELSE 0

7 END

8 ) AS size3

9 FROM

10 test_ylx

11 GROUP BY

12 name;

NAME SIZE1 SIZE2 SIZE3

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

A 1 1 0

B 1 0 0

C 0 0 1

SQL

上面的例子中, size1 和 size2 是用 DECODE

size3 用 CASE WHEN

看具体情况需要,而使用。

========================================

唯一麻烦的是

这个SQL, 需要预先知道, size1 size2 size3 这些信息

如果表中新增加了 size4 , 需要修改 SQL 语句。


文章标题:oracle值怎么转列,oracle转置 列转行
文章URL:http://chengdu.cdxwcx.cn/article/hcojop.html