2010-02-14 63 views
5

不知道這是可能的,但有可能是一個創造性的方法...SQL排序數據成Pattern

鑑於在SQL Server 2005這樣的數據:

AAA
AAA
BBB
BBB
CCC
CCC
DDD
DDD

我怎麼能返回的模式來分類這樣的結果集:

AAA
BBB
CCC
DDD
AAA
BBB
CCC
DDD

+0

你有可能創建這個訂單的任何其他領域? – tangens

+0

這是什麼數據庫? –

+0

oops - SQL Server 2005 – Daniel

回答

5

如果列被稱爲「關口」,而你的表被命名爲「表」,我會嘗試這樣的事:

WITH Indexes AS (
    SELECT 
    ROW_NUMBER() OVER (PARTITION BY col ORDER BY col) as __row, 
    col 
    FROM table) 
SELECT col 
FROM Indexes 
ORDER BY __row, col; 
+0

+1:這比我的解決方案更爲通用,只適用於2個副本。 –

+1

哇 - 太棒了! – Daniel

+0

+1我從來沒有想過使用「分區由col ORDER BY COL」 – gbn

0

別不知道它是否可行,但在Oracle中,我會嘗試創建一個視圖,在該視圖中,您在視圖的查詢中使用ROWNUM。

然後查詢視圖和排序:

  • ROWNUM模2
  • 字符串

我沒有我的手在這裏數據庫來測試這一點,但是這提示可能給你一些想法。

0

Mysql的,假設你有表T(一個varchar);與數據您所提供:

select @t:=a from T order by @t <> a; 

它工作:-)

+0

糟糕...只是看到你需要SQL Server 2005 – Qwerty