SELECT  DISTINCT   a.AUT_STATNEW
              FROM R5AUTH a                         
              where AUT_ENTITY='E'
              AND  CONNECT_BY_ISLEAF= a.AUT_STATUS 
             START WITH  a.AUT_STATUS ='A'
             CONNECT BY a.AUT_STATUS = PRIOR a.AUT_STATNEW   

解决方案 »

  1.   

    是这样吗?报错提示无用的数字? 即使把 a.AUT_STATUS改成1的话出来的是 数值C 不是数字D 
      

  2.   

    那就是你的CONNECT BY a.AUT_STATUS = PRIOR a.AUT_STATNEW这句有问题,把表数据贴出来看看。
      

  3.   

    那就是你的CONNECT BY a.AUT_STATUS = PRIOR a.AUT_STATNEW这句有问题,把表数据贴出来看看。
      

  4.   

    那就是你的CONNECT BY a.AUT_STATUS = PRIOR a.AUT_STATNEW这句有问题,把表数据贴出来看看。
    连接有问题,参考如下;WITH T1 AS
     (SELECT 'A' ID, NULL PID
        FROM DUAL
      UNION ALL
      SELECT 'B' ID, 'A' PID
        FROM DUAL
      UNION ALL
      SELECT 'C' ID, 'B' PID
        FROM DUAL
      UNION ALL
      SELECT 'D' ID, 'C' PID
        FROM DUAL)
    SELECT A.ID
      FROM T1 A
     WHERE CONNECT_BY_ISLEAF = 1
     START WITH A.ID = 'A'
    CONNECT BY PRIOR A.ID = A.PID;
      

  5.   

    那就是你的CONNECT BY a.AUT_STATUS = PRIOR a.AUT_STATNEW这句有问题,把表数据贴出来看看。
    连接有问题,参考如下;WITH T1 AS
     (SELECT 'A' ID, NULL PID
        FROM DUAL
      UNION ALL
      SELECT 'B' ID, 'A' PID
        FROM DUAL
      UNION ALL
      SELECT 'C' ID, 'B' PID
        FROM DUAL
      UNION ALL
      SELECT 'D' ID, 'C' PID
        FROM DUAL)
    SELECT A.ID
      FROM T1 A
     WHERE CONNECT_BY_ISLEAF = 1
     START WITH A.ID = 'A'
    CONNECT BY PRIOR A.ID = A.PID;
    这个还有其他办法吗? 因为,这个是审批权限的,不同的审批单 他的授权代码不一样,而且他也不一定就是从A到D的授权,如果是A到Z的话 那是不是要写很多union?
      

  6.   

    那就是你的CONNECT BY a.AUT_STATUS = PRIOR a.AUT_STATNEW这句有问题,把表数据贴出来看看。
    连接有问题,参考如下;WITH T1 AS
     (SELECT 'A' ID, NULL PID
        FROM DUAL
      UNION ALL
      SELECT 'B' ID, 'A' PID
        FROM DUAL
      UNION ALL
      SELECT 'C' ID, 'B' PID
        FROM DUAL
      UNION ALL
      SELECT 'D' ID, 'C' PID
        FROM DUAL)
    SELECT A.ID
      FROM T1 A
     WHERE CONNECT_BY_ISLEAF = 1
     START WITH A.ID = 'A'
    CONNECT BY PRIOR A.ID = A.PID;
    这个还有其他办法吗? 因为,这个是审批权限的,不同的审批单 他的授权代码不一样,而且他也不一定就是从A到D的授权,如果是A到Z的话 那是不是要写很多union?
    这个union all只是他自己写的临时测试表
      

  7.   

    那就是你的CONNECT BY a.AUT_STATUS = PRIOR a.AUT_STATNEW这句有问题,把表数据贴出来看看。
    连接有问题,参考如下;WITH T1 AS
     (SELECT 'A' ID, NULL PID
        FROM DUAL
      UNION ALL
      SELECT 'B' ID, 'A' PID
        FROM DUAL
      UNION ALL
      SELECT 'C' ID, 'B' PID
        FROM DUAL
      UNION ALL
      SELECT 'D' ID, 'C' PID
        FROM DUAL)
    SELECT A.ID
      FROM T1 A
     WHERE CONNECT_BY_ISLEAF = 1
     START WITH A.ID = 'A'
    CONNECT BY PRIOR A.ID = A.PID;
    这个还有其他办法吗? 因为,这个是审批权限的,不同的审批单 他的授权代码不一样,而且他也不一定就是从A到D的授权,如果是A到Z的话 那是不是要写很多union?
    这个union all只是他自己写的临时测试表
    哥们,还是你了解我
      

  8.   

    给你在最后加了一行
       SELECT  DISTINCT   a.AUT_STATNEW
                  FROM R5AUTH a                         
                  where AUT_ENTITY='E'   
                 START WITH  a.AUT_STATUS ='A'
                 CONNECT BY a.AUT_STATUS = PRIOR a.AUT_STATNEW 
                         AND LEVEL = 1
      

  9.   

    那就是你的CONNECT BY a.AUT_STATUS = PRIOR a.AUT_STATNEW这句有问题,把表数据贴出来看看。
    连接有问题,参考如下;WITH T1 AS
     (SELECT 'A' ID, NULL PID
        FROM DUAL
      UNION ALL
      SELECT 'B' ID, 'A' PID
        FROM DUAL
      UNION ALL
      SELECT 'C' ID, 'B' PID
        FROM DUAL
      UNION ALL
      SELECT 'D' ID, 'C' PID
        FROM DUAL)
    SELECT A.ID
      FROM T1 A
     WHERE CONNECT_BY_ISLEAF = 1
     START WITH A.ID = 'A'
    CONNECT BY PRIOR A.ID = A.PID;
    这个还有其他办法吗? 因为,这个是审批权限的,不同的审批单 他的授权代码不一样,而且他也不一定就是从A到D的授权,如果是A到Z的话 那是不是要写很多union?
    这个union all只是他自己写的临时测试表
    哥们,还是你了解我
      

  10.   

    那就是你的CONNECT BY a.AUT_STATUS = PRIOR a.AUT_STATNEW这句有问题,把表数据贴出来看看。
    连接有问题,参考如下;WITH T1 AS
     (SELECT 'A' ID, NULL PID
        FROM DUAL
      UNION ALL
      SELECT 'B' ID, 'A' PID
        FROM DUAL
      UNION ALL
      SELECT 'C' ID, 'B' PID
        FROM DUAL
      UNION ALL
      SELECT 'D' ID, 'C' PID
        FROM DUAL)
    SELECT A.ID
      FROM T1 A
     WHERE CONNECT_BY_ISLEAF = 1
     START WITH A.ID = 'A'
    CONNECT BY PRIOR A.ID = A.PID;
    这个还有其他办法吗? 因为,这个是审批权限的,不同的审批单 他的授权代码不一样,而且他也不一定就是从A到D的授权,如果是A到Z的话 那是不是要写很多union?

    这个是可以的能得到一个D,是不是就说明连接没有问题?