网站首页 > 文章中心 > 其它

oracle中怎么列转行

作者:小编 更新时间:2023-09-03 19:35:34 浏览量:362人看过

oracle 列转行

表已创建.

SQL insert into t values(1,'A');

已创建 1 行.

SQL insert into t values(1,'B');

SQL commit;

提交完成.

SQL select a,max(decode(c,1,b,null)),

SQL /

A MAX(DECODE MAX(DECODE MAX(DECODE

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

①. A B

SQL

oracle列转行

INSERT INTO 新表 (SELECT ID, '呼吸系统疾病' FROM 原表 WHERE 呼吸系统疾病有无 = 1 UNION SELECT ID, '消化系统疾病' FROM 原表 WHERE 消化系统疾病有无 = 1

UNION SELECT ID, '循环系统疾病' FROM 原表 WHERE 循环系统疾病有无 = 1)

如果使用行转列,还得使用merge into,还不如上面的语句清晰.

Oracle中列转行,如何实现?

基本思路:对每班学生排序,根据序号构造列名,拼接动态sql

--测试数据

create?table

);?

insert?into?"表A"?

select?'张三','100','一班'?from?dual?union?all

select?'李四','101','二班'?from?dual?union?all

--动态拼接Pivot?

declare

begin

for?x?in?(??

select?distinct?row_number()?over?(partition?by?"班级"?order?by?"学号")?seq?

from?"表A"?order?by?seq?)?loop?

sqlstr?:=?sqlstr?||?','''?||?'学号'?||to_char(x.seq)||'''';?

end?loop;?

--将前面构造的字符串放入Pivot语句中

sqlstr:='

select?*?from?(

select?"学号","班级",?''学号''||?to_char(

row_number()?over?(partition?by?"班级"?order?by?"学号"))?seq?

from?"表A")?t

pivot(

max("学号")

for?seq?in?('||sqlstr||')?

)';

--dbms_output.put_line(sqlstr);

--将查询结果放入临时视图中

sqlstr?:=?'CREATE?OR?REPLACE?VIEW?tmp_result?AS?'||?sqlstr;

execute?immediate?sqlstr;

end;

--查看结果

select?*?from?tmp_result;

结果如下:

oracle中怎么将列转换为行

可以使用wm_concat()函数;

下面是我做的一个例子,可以参考下,当然具体语法可以百度,也可以去官方文档查:

SCOTT@ ysdb1show user

USER is "SCOTT"

Table created.

SCOTT@ ysdb1insert into test_concat values(1,'a');

①. row created.

SCOTT@ ysdb1insert into test_concat values(1,'b');

SCOTT@ ysdb1insert into test_concat values(1,'c');

SCOTT@ ysdb1select * from test_concat;

ID NAME

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

①. a

①. b

①. c

SCOTT@ ysdb1select wm_concat(name) from test_concat;

WM_CONCAT(NAME)

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

a,b,c,q,w,e,f

SCOTT@ ysdb1select id,wm_concat(name) from test_concat group by id;

ID WM_CONCAT(NAME)

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

①. a,c,b

oracle sql 列转行

oracle中列传行可用wm_concat来实现.

如test表中数据如下:

现要将name列一列显示成行,可用如下语句:

select wm_concat(name) from test;结果:

以上就是土嘎嘎小编为大家整理的oracle中怎么列转行相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章