我有一個表,它看起來像多列排序(SQL Server 2005中)
Col1 col2 col3 col4 col5
1 5 1 4 6
1 4 0 3 7
0 1 5 6 3
1 8 2 1 5
4 3 2 1 4
劇本是
declare @t table(col1 int, col2 int, col3 int,col4 int,col5 int)
insert into @t
select 1,5,1,4,6 union all
select 1,4,0,3,7 union all
select 0,1,5,6,3 union all
select 1,8,2,1,5 union all
select 4,3,2,1,4
我想要的輸出爲每列按升序進行排序,即
Col1 col2 col3 col4 col5
0 1 0 1 3
1 3 1 1 4
1 4 2 3 5
1 5 2 4 6
4 8 5 6 7
我已經受如下因素程序解決了這個問題
Select
x1.col1
,x2.col2
,x3.col3
,x4.col4
,x5.col5
From (Select Row_Number() Over(Order By col1) rn1, col1 From @t)x1
Join(Select Row_Number() Over(Order By col2) rn2, col2 From @t)x2 On x1.rn1=x2.rn2
Join(Select Row_Number() Over(Order By col3) rn3, col3 From @t)x3 On x1.rn1=x3.rn3
Join(Select Row_Number() Over(Order By col4) rn4, col4 From @t)x4 On x1.rn1=x4.rn4
Join(Select Row_Number() Over(Order By col5) rn5, col5 From @t)x5 On x1.rn1=x5.rn5
但我對此解決方案並不滿意。
有沒有更好的方法來實現? (使用基於集合的方法)
如果是這樣,任何人都可以請示例。
感謝
你能解釋一下你爲什麼要這樣做嗎?這將表明你的數據庫的設計也許不是最佳的... – 2010-05-24 04:24:43
我懷疑你會更好,詢問你正在嘗試做整個事情... – 2010-05-24 04:44:27
發售的聲譽不會幫助解決一些東西,基本上是無法解決的,由於要求。你應該接受建議,即你正在嘗試做的事情是根本錯誤的。 – 2010-05-28 03:51:50