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...
 

Leer las respuestas

#1 Maxi
09/08/2005 - 16:25 | Informe spam
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...


Preguntas similares