2015-03-25 40 views
1

特定的分期记录我有一个数据的表如下:选择从Sybase表

Id    stage    date    Emp_id3 
=====  =====   =====    ===== 
DEP1   new    12thmarch   33 
DEP1   approval  13thmarch   22 
DEP1   reject   14thmarch   77 
DEP1   approval  15thmarch   66 
DEP1   reject   16thmarch   65 
DEP1   approval  17thmarch   87 
DEP1   complete  18thmarch   99 

我想找到Emp_id3谁已经从暂存数据拒绝批准阶段。在这种情况下,它将是87,因为这是最新的批准。 这是具有当前阶段数据的主表具有阶段明智数据的审计表。有人可以帮助我与sybase查询相同吗?任何帮助都感激不尽。

回答

0

您描述的问题遇到问题石Sybase Sybase问题,没有排名功能。 波纹管我创建了一个涉及使用临时表的示例解决方案。额外的假设是该日期应采用确保唯一性的格式(DATETIME应该足够)。

CREATE TABLE #temp 
(
id VARCHAR(20), 
stage VARCHAR(20), 
DATE INT, 
Emp_id3 INT) 

INSERT INTO #temp 
select "DEP1", "new", 12,33 
union select "DEP1", "approval",13,22 
union select "DEP1", "reject", 14,77 
union select "DEP1", "approval",15,66 
union select "DEP1", "reject", 16,65 
union select "DEP1", "approval",17,87 
union select "DEP1", "complete",18,99 

SELECT *, rank = identity(1) into #temp_rk FROM #temp ORDER BY DATE 

SELECT changer.Emp_id3 FROM 
#temp_rk changer,#temp_rk originator 
WHERE 
    changer.stage="approval" 
    AND originator.stage ="reject" 
    AND changer.rank -1 = originator.rank 
HAVING changer.rank = max(changer.rank)