2010-02-14 35 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