2013-03-07 112 views
0

如何獲得以下輸出?如何獲得以下輸出?

輸入:

t1 
----------------- 
col1 col2 
---------------- 
2  a 
1  c 
3  b 
---------------- 

輸出:

t1 
----------------- 
col1  col2 
---------------- 
1   a 
2   b 
3   c 
---------------- 
+1

哪裏'B'輸出從何而來? – 2013-03-07 13:09:17

+0

對不起,我改變了 – Madhav 2013-03-07 13:10:00

+0

這可能會幫助你:[排序兩列不同順序](http://www.java2s.com/Tutorial/Oracle/0040__Query-Select/Sorttwocolumnswithdifferentordering.htm) – 2013-03-07 13:13:06

回答

1
select C1.col1, C2.col2 
from 
    (select col1, row_number() over (order by col1) rn 
    from t1) C1 
join 
    (select col2, row_number() over (order by col2) rn 
    from t1) C2 
on C1.rn=C2.rn 
order by C1.rn 
+0

'a.rn'應該是't1.rn'(用'your_table',你指的是OP的't1',對嗎?可能比't1/t2'更適合使用其他表別名)。 – 2013-03-07 13:36:43

+1

謝謝,我已經糾正。 – 2013-03-07 13:39:25

+0

一個額外的小修正:'從t2'應該是'從t1'(OP的表) - 然後,它就像一個魅力:) – 2013-03-07 13:40:16

2

您可以嘗試使用行號,如:

SELECT row_number() OVER (ORDER BY a.col2) as col1, col2 
FROM t1 a ORDER BY a.col2 
+0

我已經不同地理解了這個問題,因爲他要求分開重新排序。你只需重新分配ID。 :)不知道OP在詢問什麼。 – 2013-03-07 13:43:40

+0

儘管我同意弗洛林說這個問題沒有明確說明,但我懷疑Harry的解釋很可能是正確的 - 他們只是想在表格中「重新排序」id。無論如何,另一種解釋沒有任何意義。 – 2013-03-12 07:33:59

0

試試這個..

select col1,col2 from 
(select col1,rownum rn from(select col1 from t1 order by col1)) a, 
(select col2,rownum rn from(select col2 from t1 order by col2)) b 
where a.rn=b.rn