本人没接触过数据库..刚来新公司也不久,都不知道怎么搜索相关问题只能发贴.问题是这样:现有一个log表记录订单各种状态与相应状态变更时间. 现在别处需要用到这里的几个时间.
因为日志表比较大批量查询可能就会影响性能.新建表嘛得在代码流程里都单独再记录时间点,有点多而且这几个时间只是现在需要用到,
别处暂时没需求,而查日志表又有效率问题
现在需要根据订单ID比较快的查询到其记录的各状态对应时间
能用视图解决吗? 可以的话应该sql应该怎么写?
比如说转成
 id    type1     type2     type3 ... typeN
 123   状态1时间 状态2时间 ...
 321   状态1时间 状态2时间 ...oracle视图

解决方案 »

  1.   

    有点像.但有区别
    相当于把上图中 MTRL_APPLY_ID 当作主键
    (因为订单有多状态,日志随意加入,顺序不定也不是唯一的所以不能只是行列转下)
    然后把几个订单状态转成列(名)对应状态变更时间.
      

  2.   

    BUSI_TYPE 就是订单状态了,就是行转列了。这跟顺序没有关系吧
      

  3.   

    类似这样的效果
    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;这种方式的用视图还是会有效率问题. 最后还是新建了张表.不好意思没多久就决定建表了,忘记了帖子的事.