Como orderan desendente con un valor diferente al inicio de la lista...

29/09/2006 - 00:28 por Daniel G. Samborski | Informe spam
Hola, en un grupo alguien pregunto como podria ordenar una lista, pero que
siempre estuviera encima un nombre.

Por ejemplo:

e
d
a
b
c
f

Lo que preguntaba era como ordenar esta lista pero, por ejemplo, con el 'b'
arriba y luego todo ordenado.

b
a
c
d
e
f

Alguien le respondio con este ejemplo.

select * from tabla a where col != 'b'
order by col
union
select * from tabla a where col = 'b'

El tema es que cuando lo quiero probar me da un error, aparentemente no se
puede poner un order antes del union y, si lo coloco al final.

select * from tabla a where col != 'b'
union
select * from tabla a where col = 'b'
order by col


Es como si realizara un simple order by sin union.

select * from tabla
order by col



Como se puede hacer que esto funciones, la verdad que me intereso...



Daniel.

Preguntas similare

Leer las respuestas

#6 DNC
29/09/2006 - 02:29 | Informe spam
use tempdb
go

create table curioso01
(identif int identity(1,1) not null
, campo1 varchar(1) not null default ''
, campo2 int not null default 0
, campo3 int not null default 0
)
go

insert into curioso01 values (default,5,3)
insert into curioso01 values ('a',7,5)
insert into curioso01 values ('b',5,7)
insert into curioso01 values ('c',15,13)
insert into curioso01 values ('d',25,33)
go

select identif, campo1, campo2, campo3 from curioso01
go

select campo1, campo2, campo3 from curioso01
order by case when campo1 = 'b' then null else campo1 end
go

Cordiales Saludos! ,
Diego.-

<!--Enviar Email: Pega esto en un .htm -->
<!-- INICIO -->
<a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#100;&#99;&#111;
&#110;&#116;&#105;&#110;&#64;&#65;&#114;&#103;&#101;&#110;&#116;
&#105;&#110;&#97;&#46;&#99;&#111;&#109;">
Diego N. Contin</a>
<!-- FIN -->
Uso del Foro
http://www.mvp-access.com/rubenvigon/foro/

Este mensaje se proporciona TAL CUAL.
Sin ningun derecho o garantia

The documentation is provided to you "as is" without warranty of any kind.
The entire risk
usage and all it's consequences including data loss and hardware damage are
with you.

"En cuestiones de cultura y de saber, solo se pierde lo que se guarda; solo
se gana lo que se da". Antonio Machado

"Tres cosas que son el deber de todos: escuchar humildemente, responder
discretamente y juzgar bondadosamente."
Tríada celta.

"I wish I'd known that before I started writing all this code."
"Daniel G. Samborski" escribió en
el mensaje news:
Hola, en un grupo alguien pregunto como podria ordenar una lista, pero que
siempre estuviera encima un nombre.

Por ejemplo:

e
d
a
b
c
f

Lo que preguntaba era como ordenar esta lista pero, por ejemplo, con el
'b' arriba y luego todo ordenado.

b
a
c
d
e
f

Alguien le respondio con este ejemplo.

select * from tabla a where col != 'b'
order by col
union
select * from tabla a where col = 'b'

El tema es que cuando lo quiero probar me da un error, aparentemente no se
puede poner un order antes del union y, si lo coloco al final.

select * from tabla a where col != 'b'
union
select * from tabla a where col = 'b'
order by col


Es como si realizara un simple order by sin union.

select * from tabla
order by col



Como se puede hacer que esto funciones, la verdad que me intereso...



Daniel.


Respuesta Responder a este mensaje
#7 Daniel G. Samborski
29/09/2006 - 02:58 | Informe spam
Nadie lo dice...eso no lo concia, muy interesante.
Funciona muy bien.


Gracias.


Daniel.

"Ricardo Passians" escribió en el mensaje
news:%

Y quien dice que en el order by no se puede poner una expresion ?

ejemplo:

select * from tabla a order by (case when col='b' then '' else col end)


Ricardo Passians


"Daniel G. Samborski" wrote in
message news:
Hola, en un grupo alguien pregunto como podria ordenar una lista, pero
que siempre estuviera encima un nombre.

Por ejemplo:

e
d
a
b
c
f

Lo que preguntaba era como ordenar esta lista pero, por ejemplo, con el
'b' arriba y luego todo ordenado.

b
a
c
d
e
f

Alguien le respondio con este ejemplo.

select * from tabla a where col != 'b'
order by col
union
select * from tabla a where col = 'b'

El tema es que cuando lo quiero probar me da un error, aparentemente no
se puede poner un order antes del union y, si lo coloco al final.

select * from tabla a where col != 'b'
union
select * from tabla a where col = 'b'
order by col


Es como si realizara un simple order by sin union.

select * from tabla
order by col



Como se puede hacer que esto funciones, la verdad que me intereso...



Daniel.






Respuesta Responder a este mensaje
#8 Salvador Ramos
29/09/2006 - 11:34 | Informe spam
Ya te han respondido, tienes que hacer dos select diferentes y unirlas con
Union.

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"Daniel G. Samborski" escribió en
el mensaje news:
¿Tenes alguna idea de como hacerlo?



Daniel.

"Isaias" escribió en el mensaje
news:
ha
Saludos
IIslas


"Daniel G. Samborski" wrote:

Por simple curiosidad.



Daniel.

"Isaias" escribió en el mensaje
news:
> Suponiendo que se pudiera, ¿Para que?
> Saludos
> IIslas
>
>
> "Daniel G. Samborski" wrote:
>
>> Hola, en un grupo alguien pregunto como podria ordenar una lista,
>> pero
>> que
>> siempre estuviera encima un nombre.
>>
>> Por ejemplo:
>>
>> e
>> d
>> a
>> b
>> c
>> f
>>
>> Lo que preguntaba era como ordenar esta lista pero, por ejemplo, con
>> el
>> 'b'
>> arriba y luego todo ordenado.
>>
>> b
>> a
>> c
>> d
>> e
>> f
>>
>> Alguien le respondio con este ejemplo.
>>
>> select * from tabla a where col != 'b'
>> order by col
>> union
>> select * from tabla a where col = 'b'
>>
>> El tema es que cuando lo quiero probar me da un error, aparentemente
>> no
>> se
>> puede poner un order antes del union y, si lo coloco al final.
>>
>> select * from tabla a where col != 'b'
>> union
>> select * from tabla a where col = 'b'
>> order by col
>>
>>
>> Es como si realizara un simple order by sin union.
>>
>> select * from tabla
>> order by col
>>
>>
>>
>> Como se puede hacer que esto funciones, la verdad que me intereso...
>>
>>
>>
>> Daniel.
>>
>>
>>









Respuesta Responder a este mensaje
#9 Daniel G. Samborski
29/09/2006 - 13:08 | Informe spam
Si, ya lo he hecho, gracias.


Daniel.

"Salvador Ramos" escribió en el
mensaje news:%
Ya te han respondido, tienes que hacer dos select diferentes y unirlas con
Union.

Un saludo
Salvador Ramos
Murcia - España

[Microsoft MVP SQL Server]
www.helpdna.net (información sobre SQL Server y .NET)


"Daniel G. Samborski" escribió en
el mensaje news:
¿Tenes alguna idea de como hacerlo?



Daniel.

"Isaias" escribió en el mensaje
news:
ha
Saludos
IIslas


"Daniel G. Samborski" wrote:

Por simple curiosidad.



Daniel.

"Isaias" escribió en el mensaje
news:
> Suponiendo que se pudiera, ¿Para que?
> Saludos
> IIslas
>
>
> "Daniel G. Samborski" wrote:
>
>> Hola, en un grupo alguien pregunto como podria ordenar una lista,
>> pero
>> que
>> siempre estuviera encima un nombre.
>>
>> Por ejemplo:
>>
>> e
>> d
>> a
>> b
>> c
>> f
>>
>> Lo que preguntaba era como ordenar esta lista pero, por ejemplo, con
>> el
>> 'b'
>> arriba y luego todo ordenado.
>>
>> b
>> a
>> c
>> d
>> e
>> f
>>
>> Alguien le respondio con este ejemplo.
>>
>> select * from tabla a where col != 'b'
>> order by col
>> union
>> select * from tabla a where col = 'b'
>>
>> El tema es que cuando lo quiero probar me da un error, aparentemente
>> no
>> se
>> puede poner un order antes del union y, si lo coloco al final.
>>
>> select * from tabla a where col != 'b'
>> union
>> select * from tabla a where col = 'b'
>> order by col
>>
>>
>> Es como si realizara un simple order by sin union.
>>
>> select * from tabla
>> order by col
>>
>>
>>
>> Como se puede hacer que esto funciones, la verdad que me intereso...
>>
>>
>>
>> Daniel.
>>
>>
>>













Respuesta Responder a este mensaje
#10 Pedro Echavarria
29/09/2006 - 13:57 | Informe spam
Yo tampoco conocia que el order by permitia eso.
Quien sabe cuantas veces me rompi la cabeza con algun query que se
resolveria facilmente con ese truco :(
Es lo bueno de los foros que uno aprende a diario muchas cosas.

Pedro


"Daniel G. Samborski" wrote in
message news:
Nadie lo dice...eso no lo concia, muy interesante.
Funciona muy bien.


Gracias.


Daniel.

"Ricardo Passians" escribió en el mensaje
news:%

Y quien dice que en el order by no se puede poner una expresion ?

ejemplo:

select * from tabla a order by (case when col='b' then '' else col end)


Ricardo Passians


"Daniel G. Samborski" wrote in
message news:
Hola, en un grupo alguien pregunto como podria ordenar una lista, pero
que siempre estuviera encima un nombre.

Por ejemplo:

e
d
a
b
c
f

Lo que preguntaba era como ordenar esta lista pero, por ejemplo, con el
'b' arriba y luego todo ordenado.

b
a
c
d
e
f

Alguien le respondio con este ejemplo.

select * from tabla a where col != 'b'
order by col
union
select * from tabla a where col = 'b'

El tema es que cuando lo quiero probar me da un error, aparentemente no
se puede poner un order antes del union y, si lo coloco al final.

select * from tabla a where col != 'b'
union
select * from tabla a where col = 'b'
order by col


Es como si realizara un simple order by sin union.

select * from tabla
order by col



Como se puede hacer que esto funciones, la verdad que me intereso...



Daniel.










Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida