2012-09-10 90 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来自其他表格吗? –