Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

problema con ordenar datos

Estas en el tema de problema con ordenar datos en el foro de Bases de Datos General en Foros del Web. Hola señores del foro, estoy deseandoles el mejor bienestar y les pido me colaboren con lo siguiente: en una tabla de una bd en sql ...
  #1 (permalink)  
Antiguo 21/04/2005, 08:25
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
problema con ordenar datos

Hola señores del foro, estoy deseandoles el mejor bienestar y les pido me colaboren con lo siguiente:
en una tabla de una bd en sql server tengo un campo tipo varchar llamado "numero" y se muestra asi:
1/2004
2/2004
3/2004
4/2004
5/2004
10/2004
11/2004
1/2005
2/2005
3/2005

cuando hago consultas le doy la sentencia:
SELECT * FROM nombretabla ORDER BY numero asc

a lo que me arroja los datos or denados asi:
1/2004
1/2005
10/2004
11/2004
2/2004
2/2005
3/2004
3/2005
4/2004
5/2004

que debo hacer para que los datos me aparescan en el mismo orden asi:
1/2004
2/2004
3/2004
4/2004
5/2004
10/2004
11/2004
1/2005
2/2005
3/2005


muchisimas gracias a quien me colabore y de igual forma a quienes sostienen este foro.
  #2 (permalink)  
Antiguo 21/04/2005, 08:38
Avatar de Developer9
(Desactivado)
 
Fecha de Ingreso: abril-2005
Ubicación: Mi Ecuador del alma
Mensajes: 4.196
Antigüedad: 19 años
Puntos: 47
De ninguna manera te va a salir como usted necesita... porque el tipo de dato es varchar entonces pone primero todos los que empieza por 1, luego todos los que empieza por 2 y asi sucesivamente...
Luego dentro de todos los que empiezan por 1 los vuelve a ordenar otra vez
Si te es posible cambia de tipo de dato varchar a fecha u ahi si te sale ordenadito, es mi sugerencia, si te lo es posible en el modelo de datos
  #3 (permalink)  
Antiguo 21/04/2005, 10:18
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
ok developer9, primero que todo mil gracias por ayudarme; tome la sugerencia que me haces . pero los datos me quedan asi:
01/01/2004
01/02/2004
01/03/2004
01/05/2004

como hago para que se almacene solo los 7 ultimos caracteres?. estoy en sus manos.
  #4 (permalink)  
Antiguo 21/04/2005, 10:37
 
Fecha de Ingreso: enero-2005
Mensajes: 22
Antigüedad: 19 años, 4 meses
Puntos: 0
Holas
Muestralos De La Siguiente Forma:

Select To_char( Campo_fecha, 'mm-yyyy') From Tabla Order By Campo_fecha
  #5 (permalink)  
Antiguo 21/04/2005, 10:45
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
muchas gracias jimbr por la observacion, y te cuento que sigo haciendo pruebas y acabo de encontrar que no me deja ingresar el numero "13/2004" para lo cual el sistemas lo convierte en "01/13/2004" debido a que es un campo fecha.

como hago para que me acepte los numeros superiores a 12 (ya que es un consecutivo que manejo en este campo y puede llegar hasta 9999) ?
  #6 (permalink)  
Antiguo 21/04/2005, 12:48
Avatar de cableh  
Fecha de Ingreso: diciembre-2004
Mensajes: 54
Antigüedad: 19 años, 4 meses
Puntos: 0
Una forma que se me ocurre es volver a convertir el tipo de dato en varchar y hacer la siguiente consulta:

select campo from tabla order by right(campo,4),cast(left(campo,charindex('/',campo)-1) as int)

Con Right seleccionamos los cuatro últimos caracteres (el año) y luego seleccionamos con left los primeros caracteres hasta que encuentra '/' y los convertimos a un entero para que los ordene bien.

Esto funcionará siempre y cuando se mantenga el mismo formato n/aaaa para todos los registros.

Seguramente esta misma forma se pueda depurar y dejarla más simple.
Salu2.
  #7 (permalink)  
Antiguo 21/04/2005, 12:56
Avatar de vpino  
Fecha de Ingreso: diciembre-2004
Ubicación: colombia
Mensajes: 265
Antigüedad: 19 años, 4 meses
Puntos: 0
Perfecto cableh, esa fue una solucion estupenda a mi necesidad, no sabes cunto te agradezco, funciono a las mil maravillas.

nuevamente gracias compañero por esa ayuda tan valiosa.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:11.