SELECT 
         *
      FROM
      (SELECT
       H.NAME,
       H.SECCHIKBNCD,
       H.GAKUBUCD,
       H.GAKKACD 
   FROM
           (SELECT 
    SECCHIKBNNM NAME, 
    SECCHIKBNCD ,
    null GAKUBUCD, 
    null GAKKACD
    FROM 
    CO_SECCHIKBN_MST 
    UNION ALL
    SELECT 
        ' '||CO_SHOZOKU_MST.NAME NAME,
      CO_SHOZOKU_MST.SECCHIKBNCD SECCHIKBNCD,
      CO_SHOZOKU_MST.SHOZOKUCD GAKUBUCD,
        null GAKKACD 
    FROM 
      CO_SHOZOKU_MST 
    WHERE 
      CO_SHOZOKU_MST.KAISO_LEVEL = 1 AND   
      SUBSTR(CO_SHOZOKU_MST.DISPLAY_FLAGS,1,1) = '1'
             ) H
UNION ALL
SELECT 
    '  '||A.NAME NAME,
  A.SECCHIKBNCD SECCHIKBNCD,
  B.SHOZOKUCD GAKUBUCD,
  SUBSTR(A.SHOZOKUCD,LENGTH(B.SHOZOKUCD) + 1)  GAKKACD
FROM 
  CO_SHOZOKU_MST A, 
  CO_SHOZOKU_MST B
WHERE 
  A.KAISO_LEVEL = 2 AND   
  B.KAISO_LEVEL = 1 AND
      A.PARENT_ID = B.ID(+) AND
      SUBSTR(A.DISPLAY_FLAGS,1,1) = '1'
    )
  ORDER BY 
  SECCHIKBNCD,
  GAKUBUCD NULLS FIRST,
          GAKKACD NULLS FIRST
查询结果为:1 学部1部 1
2   神学部所属 1 01 00
3   神学科 1 01 01
4   コース 1 01 02
5  文学部 1 02
6   文学部所属 1 02 00
7   哲学科 1 02 01
8   教育学科 1 02 02
9   心理学科 1 02 03
10   史学科 1 02 04
我想在这个组合查询的结果里面再加入一列'ID',数据就是查询结果前面的编号。
谢谢!

解决方案 »

  1.   

    ---rownumSELECT 
            rownum, * 
          FROM 
          (SELECT 
          H.NAME, 
          H.SECCHIKBNCD, 
          H.GAKUBUCD, 
          H.GAKKACD 
      FROM 
              (SELECT 
        SECCHIKBNNM NAME, 
        SECCHIKBNCD , 
        null GAKUBUCD, 
        null GAKKACD 
        FROM 
        CO_SECCHIKBN_MST 
        UNION ALL 
        SELECT 
          ' ' ¦ ¦CO_SHOZOKU_MST.NAME NAME, 
        CO_SHOZOKU_MST.SECCHIKBNCD SECCHIKBNCD, 
        CO_SHOZOKU_MST.SHOZOKUCD GAKUBUCD, 
          null GAKKACD 
        FROM 
        CO_SHOZOKU_MST 
        WHERE 
        CO_SHOZOKU_MST.KAISO_LEVEL = 1 AND  
        SUBSTR(CO_SHOZOKU_MST.DISPLAY_FLAGS,1,1) = '1' 
            ) H 
    UNION ALL 
    SELECT 
      '  ' ¦ ¦A.NAME NAME, 
    A.SECCHIKBNCD SECCHIKBNCD, 
    B.SHOZOKUCD GAKUBUCD, 
    SUBSTR(A.SHOZOKUCD,LENGTH(B.SHOZOKUCD) + 1)  GAKKACD 
    FROM 
    CO_SHOZOKU_MST A, 
    CO_SHOZOKU_MST B 
    WHERE 
    A.KAISO_LEVEL = 2 AND  
    B.KAISO_LEVEL = 1 AND 
        A.PARENT_ID = B.ID(+) AND 
        SUBSTR(A.DISPLAY_FLAGS,1,1) = '1' 
      ) 
    ORDER BY 
    SECCHIKBNCD, 
    GAKUBUCD NULLS FIRST, 
            GAKKACD NULLS FIRST 
      

  2.   


    SELECT ROWNUM ID, X.*
      FROM (SELECT *
              FROM (SELECT H.NAME, H.SECCHIKBNCD, H.GAKUBUCD, H.GAKKACD
                      FROM (SELECT SECCHIKBNNM NAME,
                                   SECCHIKBNCD,
                                   NULL GAKUBUCD,
                                   NULL GAKKACD
                              FROM CO_SECCHIKBN_MST
                            UNION ALL
                            SELECT ' ' ¦ ¦CO_SHOZOKU_MST.NAME NAME,
                                   CO_SHOZOKU_MST.SECCHIKBNCD SECCHIKBNCD,
                                   CO_SHOZOKU_MST.SHOZOKUCD GAKUBUCD,
                                   NULL GAKKACD
                              FROM CO_SHOZOKU_MST
                             WHERE CO_SHOZOKU_MST.KAISO_LEVEL = 1
                               AND SUBSTR(CO_SHOZOKU_MST.DISPLAY_FLAGS, 1, 1) = '1') H
                    UNION ALL
                    SELECT '  ' ¦ ¦A.NAME NAME,
                           A.SECCHIKBNCD SECCHIKBNCD,
                           B.SHOZOKUCD GAKUBUCD,
                           SUBSTR(A.SHOZOKUCD, LENGTH(B.SHOZOKUCD) + 1) GAKKACD
                      FROM CO_SHOZOKU_MST A, CO_SHOZOKU_MST B
                     WHERE A.KAISO_LEVEL = 2
                       AND B.KAISO_LEVEL = 1
                       AND A.PARENT_ID = B.ID(+)
                       AND SUBSTR(A.DISPLAY_FLAGS, 1, 1) = '1')
             ORDER BY SECCHIKBNCD, GAKUBUCD NULLS FIRST, GAKKACD NULLS FIRST) X;