当前位置:首页 » 编程语言 » oracle列转行SQL

oracle列转行SQL

发布时间: 2022-10-03 16:25:57

sql 最简单的列转行

oracle中列传行可用wm_concat来实现。
如test表中数据如下:
现要将name列一列显示成行,可用如下语句:
select wm_concat(name) from test;结果:

② oracle 列转行

SQL> create table t (a number, b varchar2(10));

表已创建。

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

已创建 1 行。

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

已创建 1 行。

SQL> insert into t values(2,'A');

已创建 1 行。

SQL> insert into t values(2,'B');

已创建 1 行。

SQL> insert into t values(3,'C');

已创建 1 行。

SQL> insert into t values(3,'F');

已创建 1 行。

SQL> insert into t values(4,'D');

已创建 1 行。

SQL> commit;

提交完成。

SQL> select a,max(decode(c,1,b,null)),
2 max(decode(c,2,b,null)),
3 max(decode(c,3,b,null))
4 from(select a,b,row_number()over(partition by a order by b ) c from t)
5* group by a
SQL> /

A MAX(DECODE MAX(DECODE MAX(DECODE
---------- ---------- ---------- ----------
1 A B
2 A B
3 C F
4 D

SQL>

③ oracle sql语句怎么实现列转行

我能想到的就是union了

selectbza,'BZ'b
fromxy_bzrdbap
union
selectfbza,'FBZ'b
fromxy_bzrdbap
union
selectzzwya,'ZZWY'b
fromxy_bzrdbap
...

④ oracle 列转行

我觉得设计成一张表就够了,比如table:AB吧然后用游标实现 ,
create or replace procere ptest as
strname varchar2(30);
str varchar2(1000);
strid varchar2(10);
cursor cur is select * from AB;
begin
str:='';
open cur;
loop
fetch cur into strid,strname;
exit when cur%notfound;
str:=str||strname||',';
end loop;
str:=substr(str,1,length(str)-1);
dbms_output.put_line(str);
end;

⑤ oracle的sql语句列转行

不同人的uuid是不一样的吗?


select
(selectzfromtabnameaawherezmc='姓名'andaa.uuid=a.uuid)姓名,
(selectzfromtabnameaawherezmc='年龄'andaa.uuid=a.uuid)年龄,
(selectzfromtabnameaawherezmc='英文名称'andaa.uuid=a.uuid)英文名称,
(selectzfromtabnameaawherezmc='性别'andaa.uuid=a.uuid)性别,
(selectzfromtabnameaawherezmc='入职日期'andaa.uuid=a.uuid)入职日期,
(selectzfromtabnameaawherezmc='个人信息'andaa.uuid=a.uuid)个人信息
from(selectdistinctuuidfromtabname)a

⑥ ORACLE列转行,有如下数据,想要的结果如下(见图:)

像这样的转换,你可以通过oracle中的数据合并UNION ALL语句来实现,SQL如下:
(注:V_DATE字段应为字符串类型)

select * from (
select I_ID , I_WEBID , COLUMNID , V_DATE || '-1' , DAY1 as num
UNION ALL
select I_ID , I_WEBID , COLUMNID , V_DATE || '-2' , DAY2 as num
UNION ALL
。。。
select I_ID , I_WEBID , COLUMNID , V_DATE || '-31' , DAY31 as num
) t order by i_id , v_date

虽然SQL语句比较长,但这是通过SQL方式实现的唯一方法。
其它的方法就是通过存储过程+临时表的方式,或通过软件来实现。

希望这些对你有帮助!!!

热点内容
安卓上哪里下大型游戏 发布:2024-12-23 15:10:58 浏览:189
明日之后目前适用于什么配置 发布:2024-12-23 14:56:09 浏览:55
php全角半角 发布:2024-12-23 14:55:17 浏览:829
手机上传助手 发布:2024-12-23 14:55:14 浏览:732
什么样的主机配置吃鸡开全效 发布:2024-12-23 14:55:13 浏览:830
安卓我的世界114版本有什么 发布:2024-12-23 14:42:17 浏览:710
vbox源码 发布:2024-12-23 14:41:32 浏览:278
诗经是怎么存储 发布:2024-12-23 14:41:29 浏览:660
屏蔽视频广告脚本 发布:2024-12-23 14:41:24 浏览:419
php解析pdf 发布:2024-12-23 14:40:01 浏览:819