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

Problema SELECT MAX

Estas en el tema de Problema SELECT MAX en el foro de SQL Server en Foros del Web. Hola, estoy haciendo un select max de la columna id, tipo de dato nchar(10). los datos que tiene son los numeros del 1 al 16. ...
  #1 (permalink)  
Antiguo 02/08/2012, 13:15
 
Fecha de Ingreso: noviembre-2008
Mensajes: 3
Antigüedad: 16 años
Puntos: 0
Problema SELECT MAX

Hola, estoy haciendo un select max de la columna id, tipo de dato nchar(10).
los datos que tiene son los numeros del 1 al 16. pero los organiza de esta forma,
1, 10, 11, 12, 13, 14, 15, 16 2, 3, 4, 5, 6, 7, 8, 9,

por los que la consulta SELECT MAX (columna_id) from tabla.
me retorna el 9, cuando necesito que me traiga 16.

Qué estoy haciendo mal?
  #2 (permalink)  
Antiguo 02/08/2012, 13:39
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema SELECT MAX

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. num VARCHAR(20)
  4. )
  5.  
  6. INSERT INTO #temp VALUES ('1')
  7. INSERT INTO #temp VALUES ('2')
  8. INSERT INTO #temp VALUES ('3')
  9. INSERT INTO #temp VALUES ('4')
  10. INSERT INTO #temp VALUES ('10')
  11. INSERT INTO #temp VALUES ('16')
  12.  
  13.  
  14. SELECT MAX(CONVERT(INT,num)) AS numero FROM #temp

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 02/08/2012, 14:15
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 12 años, 4 meses
Puntos: 40
Respuesta: Problema SELECT MAX

Concuerdo con Libras,
y quisiera añadir que no hay ninguna razon en almacenar numeros en tipo NChar(10):
numeros deben ser almacenados en tipos numericos,
y si es obligatorio en tipo textual - Varchar(10) y no NChar(10).
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog
  #4 (permalink)  
Antiguo 03/08/2012, 11:55
 
Fecha de Ingreso: agosto-2012
Mensajes: 2
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Problema SELECT MAX

El problema esta que tu campo es nchar, el max es para numeros y te los esta ordenando como string, 1, 10 entonces el 9 es el ultimo.

Tenes que convertir el campo a int y listo.

select max(convert(int, campo))
  #5 (permalink)  
Antiguo 03/08/2012, 12:09
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema SELECT MAX

Cita:
Iniciado por hernaneluna Ver Mensaje
El problema esta que tu campo es nchar, el max es para numeros y te los esta ordenando como string, 1, 10 entonces el 9 es el ultimo.

Tenes que convertir el campo a int y listo.

select max(convert(int, campo))
y yo que hice? converti a manzanas? ;)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #6 (permalink)  
Antiguo 04/08/2012, 16:06
 
Fecha de Ingreso: abril-2012
Ubicación: Capital Federal
Mensajes: 283
Antigüedad: 12 años, 7 meses
Puntos: 15
Respuesta: Problema SELECT MAX

Pregunta, se podria usar cast() en lugar de convert()? es lo mismo no? gracias
  #7 (permalink)  
Antiguo 06/08/2012, 08:05
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Problema SELECT MAX

Cita:
Iniciado por damimg Ver Mensaje
Pregunta, se podria usar cast() en lugar de convert()? es lo mismo no? gracias
tu mismo te respondes :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: max, select, 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 07:39.