oracle视图问题

wypstone 2013-05-10 04:18:58
本人没接触过数据库..刚来新公司也不久,都不知道怎么搜索相关问题只能发贴.

问题是这样:

现有一个log表记录订单各种状态与相应状态变更时间. 现在别处需要用到这里的几个时间.
因为日志表比较大批量查询可能就会影响性能.

新建表嘛得在代码流程里都单独再记录时间点,有点多而且这几个时间只是现在需要用到,
别处暂时没需求,而查日志表又有效率问题
现在需要根据订单ID比较快的查询到其记录的各状态对应时间
能用视图解决吗? 可以的话应该sql应该怎么写?
比如说转成
id type1 type2 type3 ... typeN
123 状态1时间 状态2时间 ...
321 状态1时间 状态2时间 ...
...全文
188 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wypstone 2013-06-09
  • 打赏
  • 举报
回复
wypstone 2013-06-09
  • 打赏
  • 举报
回复
类似这样的效果 select t.mtrl_apply_id, WMSYS.WM_CONCAT(decode(t.busi_type, 10021001,to_char(t.op_date, 'yyyymmdd'),'')) a1, WMSYS.WM_CONCAT(decode(t.busi_type, 10021002, t.op_date, '')) a2, WMSYS.WM_CONCAT(decode(t.busi_type, 10021003, t.op_date, '')) a3, WMSYS.WM_CONCAT(decode(t.busi_type, 10021004, t.op_date, '')) a4, WMSYS.WM_CONCAT(decode(t.busi_type, 10021005, t.op_date, '')) a5 from zd.mtrl_apply_log t group by t.mtrl_apply_id; 这种方式的用视图还是会有效率问题. 最后还是新建了张表. 不好意思没多久就决定建表了,忘记了帖子的事.
一干好几年 2013-05-10
  • 打赏
  • 举报
回复
BUSI_TYPE 就是订单状态了,就是行转列了。这跟顺序没有关系吧
wypstone 2013-05-10
  • 打赏
  • 举报
回复
引用 1 楼 leetan 的回复:
行转列查询吗吧
有点像.但有区别 相当于把上图中 MTRL_APPLY_ID 当作主键 (因为订单有多状态,日志随意加入,顺序不定也不是唯一的所以不能只是行列转下) 然后把几个订单状态转成列(名)对应状态变更时间.
一干好几年 2013-05-10
  • 打赏
  • 举报
回复
行转列查询吗吧

17,086

社区成员

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

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