现在业务需要建个视图
但建立的视图,每一条数据都没有一个字段可以用来作为唯一标示来区别这条数据。
请问如何解决?
可以增加个序列吗?如果可以,怎么写?附上视图脚本:CREATE OR REPLACE VIEW v_Load_Dis_Charge_info
(
nums,
vessel_m,
voyage_n,
size_q,
operator_c,
status_c,
type_c,
inland_trade_i,
shipping_status_c
 ) 
AS 
 select 
 
 
 count(*) as nums,
 loading_vessel_m,
 LOADING_VOYAGE_N,
 size_q,
 out_slot_operator_c,
 status_c,
 type_c,
 inland_trade_i,
 '出口' as shipping_status_c
 from cntr 
 where  shipping_status_c in ('EX','RE','RS')  group by out_slot_operator_c,size_q,status_c,type_c,inland_trade_i,loading_vessel_m,LOADING_VOYAGE_N
 union select 
 
 count(*) as nums,
 discharge_vessel_m,
 discharge_VOYAGE_N,
 size_q,
 in_slot_operator_c,
 status_c,
 type_c,
 inland_trade_i,
 '进口' as shipping_status_c
 from cntr 
 where  shipping_status_c in ('IM','OL') 
 group by in_slot_operator_c,size_q,status_c,type_c,inland_trade_i,discharge_vessel_m,discharge_VOYAGE_N

解决方案 »

  1.   


    加了这个,groupby里也要加rownum,这样就起不到作用了。
      

  2.   

    我的建议是你把group by的所有字段当成联合主键。
      

  3.   

    或者
    select 
     nums,
     loading_vessel_m,
     LOADING_VOYAGE_N,
     size_q,
     out_slot_operator_c,
     status_c,
     type_c,
     inland_trade_i,
     shipping_status_c,
     rownum as id
    from (
    select 
     
     
     count(*) as nums,
     loading_vessel_m,
     LOADING_VOYAGE_N,
     size_q,
     out_slot_operator_c,
     status_c,
     type_c,
     inland_trade_i,
     '出口' as shipping_status_c
     from cntr 
     where  shipping_status_c in ('EX','RE','RS')  group by out_slot_operator_c,size_q,status_c,type_c,inland_trade_i,loading_vessel_m,LOADING_VOYAGE_N
     union select 
     
     count(*) as nums,
     discharge_vessel_m,
     discharge_VOYAGE_N,
     size_q,
     in_slot_operator_c,
     status_c,
     type_c,
     inland_trade_i,
     '进口' as shipping_status_c
     from cntr 
     where  shipping_status_c in ('IM','OL') 
     group by in_slot_operator_c,size_q,status_c,type_c,inland_trade_i,discharge_vessel_m,discharge_VOYAGE_N
    )
      

  4.   

    group by不需要把?里面的两个union得到的一个rownum,在最外面的select加rownum就好了。