oracle视图问题

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

问题是这样:

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

新建表嘛得在代码流程里都单独再记录时间点,有点多而且这几个时间只是现在需要用到,
别处暂时没需求,而查日志表又有效率问题
现在需要根据订单ID比较快的查询到其记录的各状态对应时间
能用视图解决吗? 可以的话应该sql应该怎么写?
比如说转成
id type1 type2 type3 ... typeN
123 状态1时间 状态2时间 ...
321 状态1时间 状态2时间 ...
...全文
171 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
行转列查询吗吧
回复
相关推荐
发帖
Oracle
创建于2007-09-28

1.6w+

社区成员

Oracle开发相关技术讨论
申请成为版主
帖子事件
创建了帖子
2013-05-10 04:18
社区公告
暂无公告