Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从sybase表中选择特定的暂存记录_Sql_Sybase - Fatal编程技术网

Sql 从sybase表中选择特定的暂存记录

Sql 从sybase表中选择特定的暂存记录,sql,sybase,Sql,Sybase,我有一个数据表,如下所示: Id stage date Emp_id3 ===== ===== ===== ===== DEP1 new 12thmarch 33 DEP1 approval 13thmarch 22 DEP1 rejec

我有一个数据表,如下所示:

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查询吗?任何帮助都将不胜感激。

您描述的问题击中了cumber stone Sybase ase问题,没有排名功能。 下面,我创建了一个示例解决方案,其中包括使用临时表。另外一个假设是,日期的格式应该确保唯一性(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)