表已创建.
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
INSERT INTO 新表 (SELECT ID, '呼吸系统疾病' FROM 原表 WHERE 呼吸系统疾病有无 = 1 UNION SELECT ID, '消化系统疾病' FROM 原表 WHERE 消化系统疾病有无 = 1
UNION SELECT ID, '循环系统疾病' FROM 原表 WHERE 循环系统疾病有无 = 1)
如果使用行转列,还得使用merge into,还不如上面的语句清晰.
基本思路:对每班学生排序,根据序号构造列名,拼接动态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;
结果如下:
可以使用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中列传行可用wm_concat来实现.
如test表中数据如下:
现要将name列一列显示成行,可用如下语句:
select wm_concat(name) from test;结果:
以上就是土嘎嘎小编为大家整理的oracle中怎么列转行相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!