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

[SOLUCIONADO] Duda simple de ORDER BY

Estas en el tema de Duda simple de ORDER BY en el foro de SQL Server en Foros del Web. Buenas Foreros !!! A ver si pueden ayudarme con una pequeña duda... Tengo una tabla, que tiene un campo llamado: TOTAL Al hacer un ORDER ...
  #1 (permalink)  
Antiguo 03/10/2013, 02:52
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Duda simple de ORDER BY

Buenas Foreros !!!

A ver si pueden ayudarme con una pequeña duda...

Tengo una tabla, que tiene un campo llamado: TOTAL

Al hacer un ORDER BY TOTAL, me sale lo siguiente

10
20
200
30
40
50

select * from TABLA order by TOTAL

¿Saben por que puede ser?, Como puedo solucionar para que el 200 me salga el último ???
__________________
Charlie.
  #2 (permalink)  
Antiguo 03/10/2013, 03:05
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda simple de ORDER BY

Cita:
¿Saben por que puede ser?
A que tienes esa columna muy mal definida... En vez de ponerla como numérica, la has declarado como VARCHAR, por lo que la ordena alfabéticamente.

Cambia el tipo de columna.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 03/10/2013, 03:17
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Respuesta: Duda simple de ORDER BY

Bueno... es que es una columna que ya me viene definida por defecto... Ya sé que está muy, muy, muy mal definida, como otras cosas de esta BBDD... pero ya no puedo cambiarla. :S

¿Se te ocurre alguna forma con la que pueda salir del problema?
__________________
Charlie.
  #4 (permalink)  
Antiguo 03/10/2013, 06:57
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Duda simple de ORDER BY

Tendrás que usar un CAST o COVERT: http://msdn.microsoft.com/es-es/library/ms187928.aspx

De ese modo podrás convertir dinámicamente la columna en NUMEIRC, y que lo ordene en base a eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 03/10/2013, 07:07
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Duda simple de ORDER BY

Te recomiendo que hagas un cast dentro de la query para que ese resultado vaya ordenando dinamicanete los datos.


Saludos
  #6 (permalink)  
Antiguo 03/10/2013, 09:27
Avatar de elhombredeblanko  
Fecha de Ingreso: junio-2011
Ubicación: México Lindo y Querido
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Duda simple de ORDER BY

intentale asi haber si funciona amigo

Código SQL:
Ver original
  1. SELECT * FROM @Tabla ORDER BY Total ASC
__________________
si siempre hay algo nuevo que aprender
  #7 (permalink)  
Antiguo 03/10/2013, 09:31
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda simple de ORDER BY

Cita:
Iniciado por elhombredeblanko Ver Mensaje
intentale asi haber si funciona amigo

Código SQL:
Ver original
  1. SELECT * FROM @Tabla ORDER BY Total ASC
Aqui el problema como bien le mencionan es el tipo de dato, elhombredeblanko con ese query que se obtiene?

el siguiente query soluciona el problema del amigo chcma

select * from tabla order by convert(int,total) asc


saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 03/10/2013, 10:06
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Duda simple de ORDER BY

Pequeño detalle, cuando se hace un CAST o CONVERT, sobre los campos en el filtro, no se hacen uso de los indices.
__________________
MCTS Isaias Islas
  #9 (permalink)  
Antiguo 03/10/2013, 10:11
Avatar de elhombredeblanko  
Fecha de Ingreso: junio-2011
Ubicación: México Lindo y Querido
Mensajes: 212
Antigüedad: 12 años, 10 meses
Puntos: 2
Respuesta: Duda simple de ORDER BY

este es mi ejemplo

Código SQL:
Ver original
  1. DECLARE @Tabla TABLE
  2. (
  3.     Id INT IDENTITY,
  4.     Total money
  5. )
  6.  
  7. INSERT INTO @Tabla VALUES (10)
  8. INSERT INTO @Tabla VALUES (20)
  9. INSERT INTO @Tabla VALUES (200)
  10. INSERT INTO @Tabla VALUES (30)
  11. INSERT INTO @Tabla VALUES (40)
  12. INSERT INTO @Tabla VALUES (50)
  13.  
  14. SELECT * FROM @Tabla ORDER BY Total ASC

decalre MONEY como tipo de datos a total..
__________________
si siempre hay algo nuevo que aprender
  #10 (permalink)  
Antiguo 03/10/2013, 10:15
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda simple de ORDER BY

Cita:
Iniciado por elhombredeblanko Ver Mensaje
este es mi ejemplo

Código SQL:
Ver original
  1. DECLARE @Tabla TABLE
  2. (
  3.     Id INT IDENTITY,
  4.     Total money
  5. )
  6.  
  7. INSERT INTO @Tabla VALUES (10)
  8. INSERT INTO @Tabla VALUES (20)
  9. INSERT INTO @Tabla VALUES (200)
  10. INSERT INTO @Tabla VALUES (30)
  11. INSERT INTO @Tabla VALUES (40)
  12. INSERT INTO @Tabla VALUES (50)
  13.  
  14. SELECT * FROM @Tabla ORDER BY Total ASC

decalre MONEY como tipo de datos a total..
Esta bien tu respuesta pero quien pregunta en la segunda replica dice:

Bueno... es que es una columna que ya me viene definida por defecto... Ya sé que está muy, muy, muy mal definida, como otras cosas de esta BBDD... pero ya no puedo cambiarla. :S

¿Se te ocurre alguna forma con la que pueda salir del problema?


E iislas pues si no puede regresar un valor ordenado crees que le importen los indices?? ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 03/10/2013, 11:03
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Respuesta: Duda simple de ORDER BY

Bueno, muchas gracias.

Al final cree una tabla con un campo de tipo entero, la select la hice insertando los resultados ahí, y luego hice otra select con esa tabla utilizando el campo entero.

Gracias por vuestras respuestas, no caía en que el tipo de dato influía.

Un Saludo !!!
__________________
Charlie.
  #12 (permalink)  
Antiguo 03/10/2013, 11:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda simple de ORDER BY

Cita:
Iniciado por chcma Ver Mensaje
Bueno, muchas gracias.

Al final cree una tabla con un campo de tipo entero, la select la hice insertando los resultados ahí, y luego hice otra select con esa tabla utilizando el campo entero.

Gracias por vuestras respuestas, no caía en que el tipo de dato influía.

Un Saludo !!!
Creo que era mas facil hacer un convert o cast directamente en tus datos, pero si te funciono tu solucion perfecto :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 03/10/2013, 13:19
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Duda simple de ORDER BY

Libras, si el CONVERT
  #14 (permalink)  
Antiguo 03/10/2013, 13:21
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años
Puntos: 15
Respuesta: Duda simple de ORDER BY

Si el CONVERT o CAST lo aplicas directamente en el select en vez de hacerlo sobre el ORDER BY como el ej que enviaste, cambie en algo la funcionalidad?

Código SQL:
Ver original
  1. SELECT CONVERT(INT,total), <demas columnas>
  2. FROM tabla
  3. ORDER BY  1

Gracias

Etiquetas: order, select, simple, tabla
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 03:13.