2010-02-14 4 views
5

Je ne sais pas si cela est possible, mais il pourrait y avoir une approche créative ...données SQL tri dans un motif

Compte tenu de ces données dans SQL Server 2005:

AAA
AAA BBB

BBB
CCC
CCC
DDD
DDD

Comment pourrais-je retourner un jeu de résultats trié dans un modèle comme celui-ci:

AAA
BBB
CCC
DDD
AAA
BBB
CCC
DDD

+0

Avez-vous d'autres domaines qui pourraient créer cet ordre? – tangens

+0

Quelle base de données est-ce? –

+0

oops - SQL Server 2005 – Daniel

Répondre

5

Si votre colonne a été appelé "col", et votre table ont été nommés "table", je voudrais essayer quelque chose comme ceci:

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: Ceci est plus général que ma solution qui ne fonctionne que pour 2 copies. –

+1

wow - c'est génial! – Daniel

+0

+1 Je n'aurais jamais pensé à utiliser "PARTITION PAR COL ORDER BY COL" – gbn

0

Don » Je ne sais pas si cela fonctionne, mais dans Oracle je voudrais essayer de créer une vue dans laquelle vous utilisez ROWNUM dans la requête de votre vue.

requête alors la vue et trier sur:

  • rownum modulo 2
  • la chaîne

Je n'ai pas ma base de données à portée de main ici pour tester, mais cette astuce pourrait vous donner quelques idées.

0

Mysql, supposant que vous avez la table T (varchar); avec les données que vous avez fournies:

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

cela fonctionne :-)

+0

Oups ... juste vu que vous avez besoin de SQL Server 2005 – Qwerty