【问题标题】:Select a specific staging record from sybase table从 sybase 表中选择特定的暂存记录
【发布时间】:2015-03-25 14:50:58
【问题描述】:

我有一个表格,数据如下:

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

【问题讨论】:

    标签: sql sybase


    【解决方案1】:

    您描述的问题是 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-13
      • 2015-09-01
      • 2021-12-03
      • 2015-02-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多