2010-02-14 12 views
5

No estoy seguro si esto es posible, pero podría ser un enfoque creativo ...SQL clasificación de datos en un patrón

Teniendo en cuenta estos datos en SQL Server 2005:

AAA AAA

acreditación
acreditación
CCC CCC

DDD DDD

¿Cómo podría devolver un conjunto de resultados ordenados en un patrón de esta manera:

AAA
acreditación
CCC
DDD
AAA
acreditación
CCC
DDD

+0

¿Tiene alguna otros campos que podrían crear este orden? – tangens

+0

¿Qué base de datos es esto? –

+0

oops - SQL Server 2005 – Daniel

Respuesta

5

Si su columna se llama "col", y su mesa se denomina "mesa", me gustaría probar algo como esto:

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: Esto es más general que mi solución, que solo funciona para 2 copias. –

+1

wow - ¡eso es increíble! – Daniel

+0

+1 Nunca hubiera pensado en usar "PARTITION BY col orDER BY col" – gbn

0

Don' Sé si funciona, pero en Oracle trataría de crear una vista en la que use ROWNUM en la consulta de su vista.

A continuación, consulte la vista y clasificar en:

  • rownum módulo 2
  • la cadena

no tengo mi base de datos que nos ocupa aquí para probar esto, pero esto podría punta darte algunas ideas

0

Mysql, suponiendo que tiene la tabla T (un varchar); con los datos que nos ha facilitado:

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

funciona :-)

+0

Vaya ... solo vi que necesita SQL Server 2005 – Qwerty

Cuestiones relacionadas