2012-09-13 12 views
6

que tengo una columna [datatype:varchar(50)] la base de datos (SQL Server 2008) que tienen valores como se muestra a continuación:ordenar balas de la base de datos

1 
2 
1.1.11 
4.1 
5 
2.1 
1.1 
4 
1.2.1 
4.2.2 
4.3 
4.2 
4.3.1 
4.2.1 
11.2 
1.2.4 
4.4 

éstos están numerados balas para mis archivos que hay que solucionar como la agrupación de todos los registros en secuencia 1,1.1,1.1.1,2,3.1,4,10.1,11.1....

Por favor, ayúdenme en este sentido.

+0

¿Qué pasa con 'order by column_name'? – Leri

+2

¿'ORDER BY CAST ('/' + YourColumn + '/' AS HIERARCHYID)' hace lo que necesita? –

+0

AFAIK haciendo un 'orden por' en su columna los clasificará en orden de tipo de encabezado ascendente 'legal'. ¿Necesita concatenar todos los valores en una sola cadena también? – StuartLC

Respuesta

17
WITH T(YourColumn) AS 
(
SELECT '1' UNION ALL 
SELECT '2' UNION ALL 
SELECT '1.1.11' UNION ALL 
SELECT '4.1' UNION ALL 
SELECT '5' UNION ALL 
SELECT '2.1' UNION ALL 
SELECT '1.1' UNION ALL 
SELECT '4' UNION ALL 
SELECT '1.2.1' UNION ALL 
SELECT '4.2.2' UNION ALL 
SELECT '4.3' UNION ALL 
SELECT '4.2' UNION ALL 
SELECT '4.3.1' UNION ALL 
SELECT '4.2.1' UNION ALL 
SELECT '11.2' UNION ALL 
SELECT '1.2.4' UNION ALL 
SELECT '4.4' 
) 
SELECT * 
FROM T 
ORDER BY CAST('/' + YourColumn + '/' AS HIERARCHYID) 

devoluciones

YourColumn 
---------- 
1 
1.1 
1.1.11 
1.2.1 
1.2.4 
2 
2.1 
4 
4.1 
4.2 
4.2.1 
4.2.2 
4.3 
4.3.1 
4.4 
5 
11.2 

es que lo que necesita?

+0

Sí ... Muchas gracias .. Esto es lo que necesito ... muy, muy útil – Nag

Cuestiones relacionadas