Oracle字段转换问题--急

ReserveRainbow 2009-04-30 11:52:40
有一表TA 字段为cid,data001,data002,data003,data004,sendtime
数据行例如: c001 1 2 3 4 2009-5-5 12:11:11
c002 10 20 30 40 2009-5-5 12:11:11
c003 11 22 33 44 2009-5-5 12:11:11

如何根据以上TA表,创建成拥有以下要求的视图V_TA:
视图的字段为 cid, datatype, datas, sendtime
c001 data001 1 2009-5-5 12:11:11
c001 data002 2 2009-5-5 12:11:11
c001 data003 3 2009-5-5 12:11:11
c001 data004 4 2009-5-5 12:11:11
c002 data001 10 2009-5-5 12:11:11
c002 data002 20 2009-5-5 12:11:11
c002 data003 30 2009-5-5 12:11:11
c002 data004 40 2009-5-5 12:11:11
c003 data001 11 2009-5-5 12:11:11
c003 data002 22 2009-5-5 12:11:11
c003 data003 33 2009-5-5 12:11:11
c003 data004 44 2009-5-5 12:11:11

急,感谢了
...全文
126 点赞 收藏 11
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
pathuang68 2009-05-06
9L的create view的思想是对的,楼主可以试试
回复
eastrise_liu 2009-05-05
楼上的,你抄也没抄对哈哈.
回复
East271536394 2009-05-01
SQL codecreate or replace view aaa as
(select cid,'data001' datatype,data001 datas,sendtime from ta
union all
select cid,'data002',data002,sendtime from ta
union all
select cid,'data003',data003,sendtime from ta
union all
select cid,'data004',data004,sendtime from ta);
回复
xu54647265 2009-04-30
一楼的正解。
人家明显是一个人好不。
union all是必须的。
你看清了,虽然uinion了,但是确只有4个,除非你以后还有更多的data00X
回复
ReserveRainbow 2009-04-30
谢谢以上两位,希望不要用union ,看有没有别的方法,因为数据量很大(千万条以上)
回复
superhsj 2009-04-30
create or replace view aaa as 
(select cid,'data001' datatype,data001 datas,sendtime from ta
union all
select cid,'data002',data002,sendtime from ta
union all
select cid,'data003',data003,sendtime from ta
union all
select cid,'data004',data004,sendtime from ta);
回复
superhsj 2009-04-30
select cid,'data001',data001,sendtime from ta
union all
select cid,'data002',data002,sendtime from ta
union all
select cid,'data003',data003,sendtime from ta
union all
select cid,'data004',data004,sendtime from ta
回复
xu54647265 2009-04-30
[Quote=引用 5 楼 ReserveRainbow 的回复:]
不好意思,是一个人
的确有更多的data00x,有二十多项
[/Quote]
我汗的那个瀑布啊……
回复
zcs_1 2009-04-30
create table ta(
cid varchar2(4),
data001 int,
data002 int,
data003 int,
data004 int,
sendtime date);

insert into ta values('c001',1,2,3,4,to_date('2009-5-5 12:11:11'));
insert into ta values('c002',10,20,30,40,to_date('2009-5-5 12:11:11'));
insert into ta values('c003',11,22,33,44,to_date('2009-5-5 12:11:11'));


create table tatype
(
datatype varchar2(10)
);

insert into tatype values('data001');
insert into tatype values('data002');
insert into tatype values('data003');
insert into tatype values('data004');

create view v_ta (cid, datatype, datas, sendtime) as
select cid, datatype,
decode(datatype,
'data001',data001,
'data002',data002,
'data003',data003,
'data004',data004) datas, sendtime
from ta, tatype;

回复
superhsj 2009-04-30
或者你建个表,利用动态sql循环去insert
回复
ReserveRainbow 2009-04-30
不好意思,是一个人
的确有更多的data00x,有二十多项
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2009-04-30 11:52
社区公告
暂无公告