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