2012-09-10 88 views
0
select * from 
(
    Select DISTINCT 
    DocManREPORT_View.DOCINPUTDATE, 
    DocManREPORT_View.REACTIVATEDATE, 
    DocManREPORT_View.TRACENO, 
    DocManREPORT_View.CLIENTNAME, 
    DocManREPORT_View.DOCUMENTID,DocManREPORT_View.BARCODEID, 
    DocManREPORT_View.INPUTMODE, 
    DocManREPORT_View.INPUTSOURCE,PI.start_time, 
    RANK() OVER (PARTITION BY process_instance_id 
     ORDER BY last_modified_date desc) rank, 
    PI.STATUS AS PROCESSSTATUS 
    FROM DocManREPORT_View 
    INNER JOIN PROCESS_INSTANCE PI ON 
    (pi.instance_id = DocManREPORT_View.process_instance_id) 
) 
where rank = 1; 
+3

你確定這是查詢,它有兩個「WHERE」條款? – Vikdor

+0

看來你忘了(somwhere。我相信之前WHERE RANK = 1 –

+0

對不起,我之前不正確的查詢。現在我已經編輯並加入正確的。 – Vivek

回答

0

我認爲DISTINCT子句可能會搞砸了性能。我會建議你通過包含到partition by子句中來擺脫它,並看看你有什麼。

+0

沒有太大的差別 – Vivek

+0

可能這將是很好使用WITH子句兌現DISTINCT一部分? –

0

如果可以的話,儘量使用

RANK() OVER (PARTITION BY process_instance_id 
     ORDER BY last_modified_date desc) rank, 

的視圖中,因爲我tihnk查看早已每個數據進行此步驟中。

+0

查看並不包含所有數據。還有其他一些表格也需要引用 – Vivek

+0

last_modifed_date來自其他表格嗎? –