[英]Oracle SQL Statement Order By
我得到以下查詢:
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
您可以計算每個索引的編號,然后按以下順序排序:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.