原始数据
id code
1 112233
2 112200
3 110000
4 120000想要得到的数据
id code
1 112233
1 112200
1 110000
2 112200
2 110000
3 110000
4 120000请各位高手帮看看!

解决方案 »

  1.   


    不知是否可以理解成分层分级的关系?
    即:id=1  以下有2,3,4 的最上一层,
         id=2 以下有3,4两层
    。。
      

  2.   

    上面写错了
            id=1 以下有2,3 这两层,
            id=2 以下有 3这一层。
    但是这里好像没有一个字段标识出id与id之间的层级关系啊???请LZ描述清楚。
      

  3.   


    code字段分3级,都是6位的。从后往前二位判断(00标识)来分级别,如果是112233,就是3级别,就分为3行数据, 如果是112200,就是2级别,就分为2行数据,以此类推
      

  4.   


    SELECT ID,code FROM (WITH TAB AS (
    SELECT '1' id,'112233' code FROM DUAL
    UNION ALL
    SELECT '2' id,'112200' code FROM DUAL
    UNION ALL
    SELECT '3' id,'110000' code FROM DUAL
    UNION ALL
    SELECT '4' id,'120000' code FROM DUAL
    )
    SELECT t1.id,t2.code,
           CASE
             WHEN T1.CODE >= T2.CODE THEN
              CASE
             WHEN T1.CODE = MAX(T2.CODE) OVER(ORDER BY t1.id) THEN
              CASE WHEN T1.CODE=T2.CODE THEN 
                 T1.CODE
              ELSE
                 '0'
              END
             ELSE
              T2.CODE
           END ELSE '0' END flag
      FROM TAB T1, TAB T2) WHERE flag <> '0';
      

  5.   


    SQL> SELECT ID,code FROM (WITH TAB AS (
      2  SELECT '1' id,'112233' code FROM DUAL
      3  UNION ALL
      4  SELECT '2' id,'112200' code FROM DUAL
      5  UNION ALL
      6  SELECT '3' id,'110000' code FROM DUAL
      7  UNION ALL
      8  SELECT '4' id,'120000' code FROM DUAL
      9  )
     10  SELECT t1.id,t2.code,
     11         CASE
     12           WHEN T1.CODE >= T2.CODE THEN
     13            CASE
     14           WHEN T1.CODE = MAX(T2.CODE) OVER(ORDER BY t1.id) THEN
     15            CASE WHEN T1.CODE=T2.CODE THEN
     16               T1.CODE
     17            ELSE
     18               '0'
     19            END
     20           ELSE
     21            T2.CODE
     22         END ELSE '0' END flag
     23    FROM TAB T1, TAB T2) WHERE flag <> '0';I CODE
    - ------
    1 110000
    1 112200
    1 112233
    2 110000
    2 112200
    3 110000
    4 120000已选择7行。