Oracle SQL语句排序依据

用户名

我得到以下查询:

    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的数量排序?

例如这样的例子:

    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 
戈登·利诺夫(Gordon Linoff)

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章