oracle怎么转成列 oracle列转行函数 高效

oracle 如何将 行转换为列 (具体如下,求sql)WITH A AS(SELECT ID_F,LINE_F,STAGE_F,UNITSTAGE_F,CAST(CHILDSTAGE_F AS VARCHAR(100)) AS CHILDSTAGE_F,PARENTID_F FROM 表名 WHERE PARENTID_F IS NULL
UNION ALL
SELECT 表名.ID_F,表名.LINE_F,表名.STAGE_F,表名.UNITSTAGE_F,CAST(A.CHILDSTAGE_F 表名.CHILDSTAGE_F AS VARCHAR(100)) AS CHILDSTAGE_F,表名.PARENTID_F
FROM 表名 JOIN A ON 表名.PARENTID_F=A.ID_F)
SELECT LINE_F,STAGE_F,UNITSTAGE_F,CHILDSTAGE_F
FROM A
WHERE PARENTID_F IS NOT NULL
oracle 行转列,这个要怎么转witht(cate_displayname,info_waritername,count) as (
select '2014年','lizifeng',1 from dual
union all
select '历史沿革','wenqingwen',20 from dual
union all
select '领导讲话','lizifeng',3 from dual
)
SELECT cate_displayname,
nvl(lizifeng,0) as lizifeng,
nvl(wenqingwen,0) as wenqingwen
FROMt
PIVOT (
sum(count)---- pivot_clause
FOR info_waritername---- pivot_for_clause
IN('lizifeng' as lizifeng,'wenqingwen' as wenqingwen)---- pivot_in_clause
);
输出:
CATE_DISPLAYNAMELIZIFENG WENQINGWEN
------------------------ ---------- ----------
2014年10
历史沿革020
领导讲话30
oracle 根据某一行的值转化成列?楼主这种
典型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
(
【oracle怎么转成列 oracle列转行函数 高效】CASE
WHEN(zfname
=
'size3')
THEN
1
6
ELSE
7
END
8
)
AS
size3
9
FROM
10
test_ylx
11
GROUP
BY
12
name;
NAME
SIZE1
SIZE2
SIZE3
----
----------
----------
----------
A
1
1
B
1
C
1
SQL
上面的例子中oracle怎么转成列,
size1

size2
是用
DECODE
size3

CASE
WHEN
看具体情况需要oracle怎么转成列,而使用 。
========================================
唯一麻烦的是
这个SQLoracle怎么转成列,
需要预先知道,
size1
size2
size3
这些信息
如果表中新增加oracle怎么转成列了
size4

需要修改
SQL
语句 。
oracle如何实现行转列用union all
假设列名分别为 col1 cola colb...
select col1,cola
from tabname
where ...
union all
select col1,colb
from tabname
where ...
union all
select col1,colc
from tabname
where ...
union all
select col1,cold
from tabname
where ...
union all
select col1,cole
from tabname
where ...
union all
select col1,colf
from tabname
where ...
oracle数据库里面如何把一行数据转化为列显示可用union all来实现 。
如test表中数据如下:
现要将id为3的一条按列显示,可用如下语句:
select to_char(id) str from test where id=3
union all
select name from test where id=3;
查询结果:
关于oracle怎么转成列和oracle列转行函数 高效的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读