Oracle SQL语句按顺序排列

Oracle SQL语句按顺序排列,sql,oracle,indexing,oracle11g,Sql,Oracle,Indexing,Oracle11g,我有以下疑问: COLUMN INDEX_NAME FORMAT A15 HEADING "INDEX_NAME" COLUMN COLUMN_NAME FORMAT A15 HEADING "COLUMN_NAME" COLUMN COLUMN_POSITION FORMAT 999999 HEADING "COLUMN_POSITION" SELECT INDEX_NAME, COLUMN_NAME, COLUMN_POSITION FROM ALL

我有以下疑问:

    COLUMN INDEX_NAME FORMAT A15 HEADING "INDEX_NAME"
    COLUMN COLUMN_NAME FORMAT A15 HEADING "COLUMN_NAME"
    COLUMN COLUMN_POSITION FORMAT 999999 HEADING "COLUMN_POSITION"

    SELECT INDEX_NAME, COLUMN_NAME, COLUMN_POSITION
    FROM ALL_IND_COLUMNS
    WHERE TABLE_OWNER = 'ABC'
返回的结果如下:

    INDEX_NAME      COLUMN_NAME     COLUMN_POSITION
    --------------- --------------- ---------------
    SYS_C007963     C_UNAME                       1 
    ORDER_LINE_PKEY OL_ID                         1 
    ORDER_LINE_PKEY OL_O_ID                       2 
    ORDERS_PKEY     O_ID                          1 
    ITEM_PKEY       I_ID                          1 
    CUSTOMER_PKEY   C_ID                          1 
    COUNTRY_PKEY    CO_ID                         1 
    CC_XACTS_PKEY   CX_O_ID                       1 
    AUTHOR_PKEY     A_ID                          1 
    ADDRESS_PKEY    ADDR_ID                       1 

     10 rows selected 
如何更改sql语句,使其按照重复索引的数量按升序排序

例如:

    INDEX_NAME      COLUMN_NAME     COLUMN_POSITION
    --------------- --------------- ---------------
    SYS_C007963     C_UNAME                       1  
    ORDERS_PKEY     O_ID                          1 
    ITEM_PKEY       I_ID                          1 
    CUSTOMER_PKEY   C_ID                          1 
    COUNTRY_PKEY    CO_ID                         1 
    CC_XACTS_PKEY   CX_O_ID                       1 
    AUTHOR_PKEY     A_ID                          1 
    ADDRESS_PKEY    ADDR_ID                       1 
    ORDER_LINE_PKEY OL_ID                         1 
    ORDER_LINE_PKEY OL_O_ID                       2

     10 rows selected 

您可以计算每个索引的编号,然后按该编号排序:

select INDEX_NAME, COLUMN_NAME, COLUMN_POSITION
FROM (SELECT INDEX_NAME, COLUMN_NAME, COLUMN_POSITION,
             count(*) over (partition by INDEX_NAME) as cnt
      FROM ALL_IND_COLUMNS
      WHERE TABLE_OWNER = 'ABC'
     ) t
order by cnt, INDEX_NAME