Foros del Web » Programando para Internet » ASP Clásico »

ORDER BY campo='algo' en SQL Server

Estas en el tema de ORDER BY campo='algo' en SQL Server en el foro de ASP Clásico en Foros del Web. Hola, tengo una duda con respecto a una consulta, anteriormente la he expuesto en el subforo de bases de datos, pero parece que es menos ...
  #1 (permalink)  
Antiguo 31/08/2005, 02:13
XaRoD
Invitado
 
Mensajes: n/a
Puntos:
ORDER BY campo='algo' en SQL Server

Hola, tengo una duda con respecto a una consulta, anteriormente la he expuesto en el subforo de bases de datos, pero parece que es menos activo que este, así que aquí va mi pregunta:

Tengo una lista de registros y quiero mostrarlos ordenados alfabéticamente, pero quiero que el primero que aparezca sea el que yo le diga, por ejemplo:

ESPAÑA (este el primero)
ARGENTINA (a partir de aquí ordenados alfabéticamente)
CHILE
...etc

En ACCESS no hay problema, simplemente en la consulta, se le pone un ORDER BY pais='España', pais y saldrían los paises ordenados por orden alfabético pero España de primero.

Pero en SQL Server, ese método da error. Mi pregunta pues es ¿se puede hacer en SQL Server en una sola consulta? (a ser posible sin el uso de UNION)

Gracias por vuestro tiempo
  #2 (permalink)  
Antiguo 31/08/2005, 06:35
 
Fecha de Ingreso: junio-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 0
case when

No sé si hay otra forma, pero yo lo hago así:

ORDER BY
CASE P1 WHEN 'CTI MÓVIL' THEN 0.1
WHEN 'PERSONAL' THEN 0.2
ELSE ORDEN END

Así, pongo primero a Cti, segundo a Personal y tercero al orden que tengo en un campo numérico en la tabla (y que comienza en 1).
Slds. Edum.
  #3 (permalink)  
Antiguo 31/08/2005, 06:48
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Vaya, no sabía que eso se puediera hacer en Access, aunque supongo que le ha de pegar al rendimiento en tablas grandes dado que internamente haría primero una búsqueda y luego el ordenamiento ...., no se.

Pues fui a la referencia de T-SQL, específicamente a la cláusula ORDER BY y ....no, al parecer no se puede en una sola consulta SQL, supongo que deberás implementar esa funcionalidad con dos consultas o con una más una búsqueda aparte desde ASP.

Código:
ORDER BY Clause
Specifies the sort for the result set. The ORDER BY clause is invalid in views, inline functions, derived tables, and subqueries, unless TOP is also specified.

Syntax
[ ORDER BY { order_by_expression [ ASC | DESC ] }     [ ,...n] ] 

Arguments
order_by_expression

Specifies a column on which to sort. A sort column can be specified as a name or column alias (which can be qualified by the table or view name), an expression, or a nonnegative integer representing the position of the name, alias, or expression in select list. 

Multiple sort columns can be specified. The sequence of the sort columns in the ORDER BY clause defines the organization of the sorted result set.

The ORDER BY clause can include items not appearing in the select list. However, if SELECT DISTINCT is specified, or if the SELECT statement contains a UNION operator, the sort columns must appear in the select list.

Furthermore, when the SELECT statement includes a UNION operator, the column names or column aliases must be those specified in the first select list.



Note  ntext, text, or image columns cannot be used in an ORDER BY clause.


ASC 

Specifies that the values in the specified column should be sorted in ascending order, from lowest value to highest value.

DESC

Specifies that the values in the specified column should be sorted in descending order, from highest value to lowest value.

Null values are treated as the lowest possible values.

There is no limit to the number of items in the ORDER BY clause. However, there is a limit of 8,060 bytes for the row size of intermediate worktables needed for sort operations. This limits the total size of columns specified in an ORDER BY clause.
  #4 (permalink)  
Antiguo 31/08/2005, 06:53
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Lo de edumferreyra funciona bien .... ¡thanks man!
  #5 (permalink)  
Antiguo 31/08/2005, 08:28
XaRoD
Invitado
 
Mensajes: n/a
Puntos:
Genial, muchas gracias a los dos, pero en especial a edum que ha dado en el clavo, es justo lo que estaba buscando.

Te debo una ;)
  #6 (permalink)  
Antiguo 31/08/2005, 14:18
 
Fecha de Ingreso: junio-2005
Mensajes: 114
Antigüedad: 19 años
Puntos: 0
a no dar las gracias ... ya van varias cosas que saco de este foro y así funciona.
Slds. Edum.
  #7 (permalink)  
Antiguo 31/08/2005, 14:30
XaRoD
Invitado
 
Mensajes: n/a
Puntos:
obviamente así son los foros, pero yo seguiré dando las gracias a la gente que me ayuda ;)
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 (incluyéndote)




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