Foros del Web » Programación para mayores de 30 ;) » .NET »

Select ordenado por IN

Estas en el tema de Select ordenado por IN en el foro de .NET en Foros del Web. Hola estoy tratando de mostrar el resultado de este Select ordenado segun los parametros del IN: Código: SELECT NUT_DATA.Nutr_Val, NUT_DATA.Num_Data_pts FROM NUT_DATA INNER JOIN NUTR_DEF ...
  #1 (permalink)  
Antiguo 19/07/2011, 11:51
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Select ordenado por IN

Hola estoy tratando de mostrar el resultado de este Select ordenado segun los parametros del IN:

Código:
SELECT NUT_DATA.Nutr_Val, NUT_DATA.Num_Data_pts FROM NUT_DATA INNER JOIN NUTR_DEF ON NUT_DATA.Nutr_No = NUTR_DEF.Nutr_No WHERE NDB_No = " & Codigo & " AND NUTR_DEF.SR_Order IN(300, 800, 600)
El asunto es que los valores dentro del IN deben mostrarse segun ese orden (no asc o desc)

Alguien sabe si es posible?
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.
  #2 (permalink)  
Antiguo 19/07/2011, 12:28
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, 5 meses
Puntos: 2658
Respuesta: Select ordenado por IN

Técnicamente, es posible, pero eso es SQL y diferentes DBMS tienen diferente forma de lograrlo, porque tienen diferentes funciones propias que le mhan agregado al estandar SQL.
Lo que quiero decir es que no será la misma sintaxis para SQL Server, que para Oracle, Postgre o MySQL.
Dependiendo de para qué lo necesites, puede ser tal vez más práctico hacerlo en programación y no en SQL...
__________________
¿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 19/07/2011, 12:55
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Select ordenado por IN

Código SQL:
Ver original
  1. SELECT TA.Nutr_Val, NUT_DATA.Num_Data_pts FROM NUT_DATA INNER JOIN NUTR_DEF ON NUT_DATA.Nutr_No = NUTR_DEF.Nutr_No WHERE NDB_No = " & Codigo & " AND NUTR_DEF.SR_Order IN(300, 800, 600)
  2. ORDER BY CASE
  3. WHEN 300 THEN 1
  4. WHEN 800 THEN 2
  5. WHEN 600 THEN 3
  6. END
  #4 (permalink)  
Antiguo 21/07/2011, 15:05
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Select ordenado por IN

Cita:
Iniciado por HaverRamirez Ver Mensaje
Código SQL:
Ver original
  1. SELECT TA.Nutr_Val, NUT_DATA.Num_Data_pts FROM NUT_DATA INNER JOIN NUTR_DEF ON NUT_DATA.Nutr_No = NUTR_DEF.Nutr_No WHERE NDB_No = " & Codigo & " AND NUTR_DEF.SR_Order IN(300, 800, 600)
  2. ORDER BY CASE
  3. WHEN 300 THEN 1
  4. WHEN 800 THEN 2
  5. WHEN 600 THEN 3
  6. END


Gracias por responder, trata de aplicarlo en SQL SERVER EXPRESS R2 y no me resulto, supongo entonces que se trata de una sintaxis distinta como dijognzsoloyo.
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.
  #5 (permalink)  
Antiguo 21/07/2011, 15:19
Avatar de HaverRamirez  
Fecha de Ingreso: junio-2011
Ubicación: Guatemala
Mensajes: 273
Antigüedad: 12 años, 9 meses
Puntos: 33
Respuesta: Select ordenado por IN

Yo lo probe en SQL SERVER 2008, no precisamente tu query, si no mas bien utilizo solo el area del
order by
case
when 'a' then 1
when 'c' then 2
when 'b' then 3
end case

y si funciona...que error te da, o lo que queres es ponerlo en una vista?
  #6 (permalink)  
Antiguo 22/07/2011, 10:50
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Select ordenado por IN

Cita:
Iniciado por HaverRamirez Ver Mensaje
Yo lo probe en SQL SERVER 2008, no precisamente tu query, si no mas bien utilizo solo el area del
order by
case
when 'a' then 1
when 'c' then 2
when 'b' then 3
end case

y si funciona...que error te da, o lo que queres es ponerlo en una vista?
Me da error de sintaxis cerca del "ORDER"

Voy hacer mas pruebas ya que tu dices que si funciona, debe ser error mio.
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.
  #7 (permalink)  
Antiguo 26/09/2011, 12:24
Avatar de Highlander  
Fecha de Ingreso: junio-2006
Ubicación: Concepción, Chile
Mensajes: 475
Antigüedad: 17 años, 10 meses
Puntos: 4
Respuesta: Select ordenado por IN

Me sigue dando error con esta consulta:

Código:
SELECT NUT_DATA.Nutr_Val, NUT_DATA.Num_Data_pts FROM NUT_DATA INNER JOIN NUTR_DEF ON NUT_DATA.Nutr_No = NUTR_DEF.Nutr_No WHERE NDB_No = 93601 AND NUTR_DEF.SR_Order IN(300, 800, 600)
ORDER BY case 
when 300 then 1
when 800 then 2
when 600 then 3 
end

Msg 4145, Level 15, State 1, Line 3
An expression of non-boolean type specified in a context where a condition is expected, near 'then'.
__________________
Ingeniero (E) en Computación e Informática
The last man alone with god.

Etiquetas: sql
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:21.