2010-02-14 16 views
5

Nicht sicher, ob dies möglich ist, aber es könnte ein kreativer Ansatz ...SQL Sortieren von Daten in ein Muster

diese Daten in SQL Server Gegeben 2005:

AAA
AAA
BBB
BBB
CCC
CCC
DDD
DDD

Wie konnte ich wieder eine Ergebnismenge in einem Muster wie folgt sortiert:

AAA
BBB
CCC
DDD
AAA
BBB
CCC
DDD

+0

Sie arbeitet Sie weitere Felder, die diese Ordnung schaffen könnte? – tangens

+0

Welche Datenbank ist das? –

+0

oops - SQL Server 2005 – Daniel

Antwort

5

Wenn Ihre Säule wurde "col" genannt, und den Tisch wurde "Tisch" genannt, würde ich so etwas wie dies versucht:

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: Dies ist allgemeiner als meine Lösung, die nur für 2 Kopien funktioniert. –

+1

Wow - das ist großartig! – Daniel

+0

+1 Ich hätte nie gedacht, mit "PARTITION BY col ORDER BY col" – gbn

0

Don‘ Ich weiß, ob es funktioniert, aber in Oracle würde ich versuchen, eine Ansicht zu erstellen, in der Sie ROWNUM in der Abfrage Ihrer Ansicht verwenden.

dann die Ansicht abfragen und sortieren auf:

  • rownum Modulo 2
  • die Zeichenfolge

Ich habe nicht meine Datenbank zur Hand hier, dies zu testen, aber diese Spitze Macht gebe dir ein paar Ideen.

0

Mysql, vorausgesetzt, Sie Tabelle T haben (a varchar); mit den Daten versehen Sie:

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

es :-)

+0

Hoppla ... Sie haben gerade gesehen, dass Sie SQL Server 2005 benötigen – Qwerty