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)