viernes, 27 de junio de 2008

Hacer un indice alfabético, al extraer la primera letra de un una campo de la base de datos

El día de hoy me encontre con la necesidad de crear un indice alfabético de una tabla, para poder acceder a la información de manera rapida.

Es una información para listar, listado de paises.

(Se que es una bobada pero siempre hay personas que le sirve esto)

Esto es en definitiva lo que obtuve:




El punto es que, para hacerlo, utilice un query, hacia de una vez todo el trabajo de:
1. Sacar del campo "pais" solo la primera palabra de esta.
2. Si hay varios paises que empiezan con la misma letra, hacer que solo muestre uno.
3. Que el indice alfabético quede ordenado.

Para cada punto se hace esto:
1. Se usa un LEFT(CAMPO, NUMEROLETRASATRAER)
2. Usar DISTINCT para restringir las letras iguales.
3. Usar el ORDER BY para el campo del pais

El query final debe ser asi:

SELECT DISTINCT LEFT(NombrePais,1) as LETRA
FROM TABLA_PAIS
ORDER BY LEFT(NombrePais,1)
Probado para: Sql server

Espero sea util.