Order by por Fecha

09/08/2005 - 16:12 por Matías | Informe spam
HOLA a todos, tengo el siguiente sp el cual me necesito ordenar por fecha y
otros dos campos, el tema es que no me sale ordenado por fecha como debiera
ser:

CREATE PROCEDURE pa_select_inasist_personal_por_fecha(@IdPersonal AS Int,
@IdCargo as Smallint, @DesdeFecha as Char(10), @HastaFecha as Char(10)) AS
set nocount on
SELECT P.Apellidos +', '+ P.Nombres as ApellidoNombre,
CONVERT(char(10),IP.Fecha,103) as Fecha, D.Descripcion as Dia,
TI.Descripcion as TipoInas, IP.Justificada, IP.Motivo, IP.Condicion,
P.Legajo, P.Domicilio, P.Telefono1, P.Telefono2, C.Descripcion as Cargo,
IP.IdPersonal, IP.IdCargo, IP.Horario, IP.IdDia, IP.IdTipoInas,
TotInas =(SELECT COUNT(IP.IdTipoInas)
FROM InasPersonal IP
WHERE IP.IdPersonal = @IdPersonal AND IP.IdCargo = @IdCargo AND
IP.IdTipoInas = 1AND (IP.Fecha BETWEEN @DesdeFecha AND
DATEADD(dd,1,@HastaFecha))),
TotLlegTarde =(SELECT COUNT(IP.IdTipoInas)
FROM InasPersonal IP
WHERE IP.IdPersonal = @IdPersonal AND IP.IdCargo = @IdCargo AND
IP.IdTipoInas = 2 AND (IP.Fecha BETWEEN @DesdeFecha AND
DATEADD(dd,1,@HastaFecha)))
FROM InasPersonal IP
INNER JOIN Personal P ON IP.IdPersonal = P.IdPersonal
INNER JOIN Cargo C ON IP.IdCargo = C.IdCargo
INNER JOIN Dias D ON IP.IdDia = D.IdDia
INNER JOIN TipoInasPersonal TI ON IP.IdTipoInas = TI.IdTipoInas
WHERE IP.IdPersonal = @IdPersonal AND IP.IdCargo = @IdCargo AND (IP.Fecha
BETWEEN @DesdeFecha AND DATEADD(dd,1,@HastaFecha))
ORDER BY CONVERT(char(10),IP.Fecha,103), IP.IdDia, IP.Horario

Me sale ordenado de la siguiente forma:
01/07/2005
01/07/2005
04/08/2005
06/07/2005
15/03/2005
17/02/2005
17/02/2005
24/03/2005

tambien he probado: ORDER BY IP.Fecha, IP.IdDia, IP.Horario

El campo fecha de la tabla es de tipo datetime.

Comento que este mismo problema lo tengo en otros sp que tienen fecha y
tengo que ordenarlos por ésta.

Uso SQL 2000

GRACIAS...

Preguntas similare

Leer las respuestas

#6 Alejandro Mesa
09/08/2005 - 19:09 | Informe spam
Maxi,

Me ganaste de mano ;-)



Quien gano fue Matías. Yo solo servi de backup.


AMB

"Maxi" wrote:

Me ganaste de mano ;-)


Salu2
Maxi


"Alejandro Mesa" escribió en el
mensaje news:
> Matías,
>
> Con el permiso de ambos.
>
> Se puede ordernar por un campo o expresion que no este en la lista de
> columnas de la sentencia select. Maxi se refirio a que debes ordenar por
> el
> campo datetime y no por la conversion.
>
>> > > ORDER BY CONVERT(char(10),IP.Fecha,103), IP.IdDia, IP.Horario
>
> ORDER BY IP.Fecha, IP.IdDia, IP.Horario
>
>
> AMB
>
> "Matías" wrote:
>
>> Hola gracias por respoder, te comento que el Convert lo hago para que en
>> la
>> consulta no me salga la fecha + hora, solo me interesa la Fecha.
>> Como comente el campo fecha es DateTime.
>> Alguna idea?
>>
>> Muchas gracias por tu tiempo.
>>
>> "Maxi" escribió en el mensaje
>> news:
>> > Hola, el tema es q estas ordenando valores alfabeticvos y no de fecha!!
>> > porque haces el convert?
>> >
>> >
>> > Salu2
>> > Maxi
>> >
>> >
>> > "Matías" escribió en el mensaje
>> > news:%
>> > > HOLA a todos, tengo el siguiente sp el cual me necesito ordenar por
>> fecha
>> > > y
>> > > otros dos campos, el tema es que no me sale ordenado por fecha como
>> > > debiera
>> > > ser:
>> > >
>> > > CREATE PROCEDURE pa_select_inasist_personal_por_fecha(@IdPersonal AS
>> Int,
>> > > @IdCargo as Smallint, @DesdeFecha as Char(10), @HastaFecha as
>> > > Char(10))
>> AS
>> > > set nocount on
>> > > SELECT P.Apellidos +', '+ P.Nombres as ApellidoNombre,
>> > > CONVERT(char(10),IP.Fecha,103) as Fecha, D.Descripcion as Dia,
>> > > TI.Descripcion as TipoInas, IP.Justificada, IP.Motivo, IP.Condicion,
>> > > P.Legajo, P.Domicilio, P.Telefono1, P.Telefono2, C.Descripcion as
>> > > Cargo,
>> > > IP.IdPersonal, IP.IdCargo, IP.Horario, IP.IdDia, IP.IdTipoInas,
>> > > TotInas =(SELECT COUNT(IP.IdTipoInas)
>> > > FROM InasPersonal IP
>> > > WHERE IP.IdPersonal = @IdPersonal AND IP.IdCargo = @IdCargo AND
>> > > IP.IdTipoInas = 1AND (IP.Fecha BETWEEN @DesdeFecha AND
>> > > DATEADD(dd,1,@HastaFecha))),
>> > > TotLlegTarde =(SELECT COUNT(IP.IdTipoInas)
>> > > FROM InasPersonal IP
>> > > WHERE IP.IdPersonal = @IdPersonal AND IP.IdCargo = @IdCargo AND
>> > > IP.IdTipoInas = 2 AND (IP.Fecha BETWEEN @DesdeFecha AND
>> > > DATEADD(dd,1,@HastaFecha)))
>> > > FROM InasPersonal IP
>> > > INNER JOIN Personal P ON IP.IdPersonal = P.IdPersonal
>> > > INNER JOIN Cargo C ON IP.IdCargo = C.IdCargo
>> > > INNER JOIN Dias D ON IP.IdDia = D.IdDia
>> > > INNER JOIN TipoInasPersonal TI ON IP.IdTipoInas = TI.IdTipoInas
>> > > WHERE IP.IdPersonal = @IdPersonal AND IP.IdCargo = @IdCargo AND
>> (IP.Fecha
>> > > BETWEEN @DesdeFecha AND DATEADD(dd,1,@HastaFecha))
>> > > ORDER BY CONVERT(char(10),IP.Fecha,103), IP.IdDia, IP.Horario
>> > >
>> > > Me sale ordenado de la siguiente forma:
>> > > 01/07/2005
>> > > 01/07/2005
>> > > 04/08/2005
>> > > 06/07/2005
>> > > 15/03/2005
>> > > 17/02/2005
>> > > 17/02/2005
>> > > 24/03/2005
>> > >
>> > > tambien he probado: ORDER BY IP.Fecha, IP.IdDia, IP.Horario
>> > >
>> > > El campo fecha de la tabla es de tipo datetime.
>> > >
>> > > Comento que este mismo problema lo tengo en otros sp que tienen fecha
>> > > y
>> > > tengo que ordenarlos por ésta.
>> > >
>> > > Uso SQL 2000
>> > >
>> > > GRACIAS...
>> > >
>> > >
>> >
>> >
>>
>>
>>



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida