!!!警告 !!!Sort-n-Concatenate 5列的最佳方式
最親愛的SQL專家,請繼續閱讀之前開始尖叫。 這個超級非規範化表結構是 後應用一些 combinatories-糖在一個很好的規範化的 數據集:)。我回避 重新正規化這個結果集,因爲我想要保持簡單的完整 進程(也不會在應用程序的另一個地方使用這個數據) 。 (是的,Codd,我知道你在想什麼)。
具有含數值
A | B | C | D | E
-------------------
2 | 3 | 4 | 1 | 5
3 | 6 | 1 | 5 | 4
4 | 5 | 7 | 1 | 3
我想獲得的值的串聯排序它們後五列:
ABCDE
-----------
1 2 3 4 5
1 3 4 5 6
1 3 4 5 7
什麼是做到這一點的最好辦法?顯然
Select ...
, Stuff(
(
Select ' ' + Z.Col
From (
Select PKCol, A As Col From Table
Union All Select PKCol, B From Table
Union All Select PKCol, C From Table
Union All Select PKCol, D From Table
Union All Select PKCol, E From Table
) As Z
Where Z.PKCol = Table.PKCol
Order By Col
For Xml Path('')
), 1, 1, '') As Combined
From Table
,數據庫從未設計跨列進行排序這就是爲什麼解決方案是麻煩:
我不明白。 SQL中的排序按行進行。你真的想要*排列列*嗎?因爲這是一個嚴重的設計缺陷的跡象。 – Aaronaught 2010-05-11 20:43:50
你可以在荒謬的CASE陳述集中寫出5列排序......但我同意@Aaronaught。 – derobert 2010-05-11 20:48:13
@AaronNaught這個表格結構是在一組標準化的數據上應用一些組合數據後獲得的:)。我避免重新規範這個結果集,因爲我想保持簡單的過程(這些數據也不會在應用程序的另一個地方使用:) – SDReyes 2010-05-11 20:54:15