这个sql怎样写

fourfire29 2002-12-17 10:24:03
oracle:
1 怎样把多条纪录中的某一字段的值按字符串相加返回
如 1 a
2 b
3 c,d
返回abc,d
2 怎样把行转换为列?
如 1 a
2 b
3 c
返回 a,b,c
...全文
45 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
fourfire29 2002-12-18
  • 打赏
  • 举报
回复
谢谢各位了,结账
jiezhi 2002-12-17
  • 打赏
  • 举报
回复
使用过程,循环中拚sql
fourfire29 2002-12-17
  • 打赏
  • 举报
回复
1 列不固定,能实现吗?
fourfire29 2002-12-17
  • 打赏
  • 举报
回复
确实很笨,但数据库就这样设计,我也没办法,我试试
beckhambobo 2002-12-17
  • 打赏
  • 举报
回复
select aa.col||','||bb.col||','||cc.col from (select col form table where id=1) aa,(select col from table where id=2) bb,(select col from table where id=3) cc

这样方法好笨,多列联合就复杂, 还是用过程实现吧.
xinpingf 2002-12-17
  • 打赏
  • 举报
回复
1、没有这样的聚集函数

2、这样有意义吗?
如果原表中行数不固定,则无法实现。
如果行数固定,实在没有任何意义:

select max(decode(id,1,value)) col1 ,
max(decode(id,2,value)) col2 ,
max(decode(id,3,value)) col3
from table1 group by id;

行转化为列的典型例子:
表一:科目表
代码 名称
-----------
1 语文
2 数学
3 外语

表二:成绩单
学号 科目 成绩
------------------
1 1 90
1 2 95
1 3 95
2 1 92
2 2 92
2 3 97
3 1 95
3 2 90
3 3 91

转化:
select 学号,
sum(decode(科目,1,成绩) 语文,
sum(decode(科目,2,成绩) 数学,
sum(decode(科目,3,成绩) 外语,
from 成绩单
group by 学号;
jiezhi 2002-12-17
  • 打赏
  • 举报
回复
你可以写个函数sumstr(v_str),不过这很难了
beckhambobo 2002-12-17
  • 打赏
  • 举报
回复
用过程方便易于实现,为何要变得复杂化呢!
fourfire29 2002-12-17
  • 打赏
  • 举报
回复
不想用过程,行吗,大家再想想,谢谢

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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