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

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


Respuesta Responder a este mensaje
#2 Matías
09/08/2005 - 17:21 | Informe spam
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...
>
>


Respuesta Responder a este mensaje
#3 Alejandro Mesa
09/08/2005 - 17:46 | Informe spam
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...
> >
> >
>
>



Respuesta Responder a este mensaje
#4 Maxi
09/08/2005 - 18:34 | Informe spam
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...
> >
> >
>
>



Respuesta Responder a este mensaje
#5 Matías
09/08/2005 - 18:58 | Informe spam
Gracias muchachos, ya probe ordenar de esa forma:
> > tambien he probado: ORDER BY IP.Fecha, IP.IdDia, IP.Horario


sin resultados

voy a ver que pasa si en el select saco el: CONVERT(char(10),IP.Fecha,103)
as Fecha

ahora estoy en el trabajo y la bd la tengo en mi casa, esta noche hago
pruebas y cualquier cosa mañana molesto de nuevo.

Gracias.

"Matías" escribió en el mensaje
news:
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...
> >
> >
>
>


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