字段名是变量有什么办法

y0h 2011-12-30 03:07:27
有这样一个SQL

select acccodj_0,acccodd_0 后面省略.............

他的值是

15 16
14 16
13 16

我想在这个sql后再加一个字段,
如 select acccodj_0,acccodd_0 ,xxx
让他的值为

15 16 (字段ACC_15的值)
14 16 (字段ACC_14的值)
13 16 (字段ACC_13的值)

这个SQL该怎么写
...全文
225 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
y0h 2011-12-30
  • 打赏
  • 举报
回复
这是ERP系统里的表,我也不想啊
  • 打赏
  • 举报
回复
我以为一个表有60+的字段已经很多了 今天看到多的了
xpingping 2011-12-30
  • 打赏
  • 举报
回复
我见过300+的……
007-x 2011-12-30
  • 打赏
  • 举报
回复
你们把表设计成这样还能怪谁呢,快悄悄的收起来吧,别人看见了又要说你架构有问题
y0h 2011-12-30
  • 打赏
  • 举报
回复
select decode(ys.acccodj_0,1,ACC_0,2,ACC_1,3,ACC_2,4,ACC_3,
5,ACC_4,6,ACC_5,7,ACC_6,8,ACC_7,
9,ACC_8,10,ACC_9,11,ACC_10,12,ACC_11,
13,ACC_12,14,ACC_13,15,ACC_14,16,ACC_15,
17,ACC_16,18,ACC_17,19,ACC_18,20,ACC_19,
21,ACC_20,22,ACC_21,23,ACC_22,24,ACC_23,
25,ACC_24,26,ACC_25,27,ACC_26,28,ACC_27,
29,ACC_28,30,ACC_29,31,ACC_30,32,ACC_31,
33,ACC_32,34,ACC_33,35,ACC_34,36,ACC_35,
37,ACC_36,38,ACC_37,39,ACC_38,40,ACC_39,
41,ACC_40,42,ACC_41,43,ACC_42,44,ACC_43,
45,ACC_44,46,ACC_45,47,ACC_46,48,ACC_47,
49,ACC_48,50,ACC_49,51,ACC_50,52,ACC_51,
53,ACC_52,54,ACC_53,55,ACC_54,56,ACC_55,
57,ACC_56,58,ACC_57,59,ACC_58,60,ACC_59,
61,ACC_60,62,ACC_61,63,ACC_62,64,ACC_63,
65,ACC_64,66,ACC_65,67,ACC_66,68,ACC_67,
69,ACC_68,70,ACC_69,71,ACC_70,72,ACC_71,
73,ACC_72,74,ACC_73,75,ACC_74,76,ACC_75,
77,ACC_76,78,ACC_77,79,ACC_78,80,ACC_79,
81,ACC_80,82,ACC_81,83,ACC_82,84,ACC_83,
85,ACC_84,86,ACC_85,87,ACC_86,88,ACC_87,
89,ACC_88,90,ACC_89,91,ACC_90,92,ACC_91,
93,ACC_92,94,ACC_93,95,ACC_94,96,ACC_95,
97,ACC_96,98,ACC_97,99,ACC_98,' ') accj ,decode(ys.acccodd_0,1,ACC_0,2,ACC_1,3,ACC_2,4,ACC_3,
5,ACC_4,6,ACC_5,7,ACC_6,8,ACC_7,
9,ACC_8,10,ACC_9,11,ACC_10,12,ACC_11,
13,ACC_12,14,ACC_13,15,ACC_14,16,ACC_15,
17,ACC_16,18,ACC_17,19,ACC_18,20,ACC_19,
21,ACC_20,22,ACC_21,23,ACC_22,24,ACC_23,
25,ACC_24,26,ACC_25,27,ACC_26,28,ACC_27,
29,ACC_28,30,ACC_29,31,ACC_30,32,ACC_31,
33,ACC_32,34,ACC_33,35,ACC_34,36,ACC_35,
37,ACC_36,38,ACC_37,39,ACC_38,40,ACC_39,
41,ACC_40,42,ACC_41,43,ACC_42,44,ACC_43,
45,ACC_44,46,ACC_45,47,ACC_46,48,ACC_47,
49,ACC_48,50,ACC_49,51,ACC_50,52,ACC_51,
53,ACC_52,54,ACC_53,55,ACC_54,56,ACC_55,
57,ACC_56,58,ACC_57,59,ACC_58,60,ACC_59,
61,ACC_60,62,ACC_61,63,ACC_62,64,ACC_63,
65,ACC_64,66,ACC_65,67,ACC_66,68,ACC_67,
69,ACC_68,70,ACC_69,71,ACC_70,72,ACC_71,
73,ACC_72,74,ACC_73,75,ACC_74,76,ACC_75,
77,ACC_76,78,ACC_77,79,ACC_78,80,ACC_79,
81,ACC_80,82,ACC_81,83,ACC_82,84,ACC_83,
85,ACC_84,86,ACC_85,87,ACC_86,88,ACC_87,
89,ACC_88,90,ACC_89,91,ACC_90,92,ACC_91,
93,ACC_92,94,ACC_93,95,ACC_94,96,ACC_95,
97,ACC_96,98,ACC_97,99,ACC_98,' ') accd ,


要这么壮观吗?
xpingping 2011-12-30
  • 打赏
  • 举报
回复
DECLARE
sqlstr varchar(400);
begin
sqlstr :='select acccodj_0,acccodd_0';
for i in 1..99 loop
sqstr:=sqlstr||',ACC_'||i;
end loop
sqlstr:=sqlstr||'from table_test';
end ;
007-x 2011-12-30
  • 打赏
  • 举报
回复
恭喜你,你答对了,就是得这么写。
用case或decode实现,但是可以excel帮你完成。(我一般就是这么玩的)
y0h 2011-12-30
  • 打赏
  • 举报
回复
不是

是表里还有 ACC_0 ,Acc_1.........Acc_99 这么多的字段

如果用CASE可以实现
但是这么多的字段,那样写也太傻了
007-x 2011-12-30
  • 打赏
  • 举报
回复
不知道看懂lz的意思没有。
select acccodj_0,acccodd_0 ,"字段ACC_" || acccodj_0 || "的值" as xxx

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧