Consulta por dias

13/12/2005 - 08:47 por Mendez | Informe spam
Hola gente!

Pues vereis, llevo dandole vueltas a una consulta que lleva un agrupado
por fechas.

El tema es, sacar el primer registro de cada dia, y como no tengo la
funcion de agregado FIRST, pues no se muy bien como hacerlo.

He encontrado soluciones por ahi, pero claro, me devuelven el primero en
general, pero no el primero de cada dia, pues si lo agrupo por la fecha,
como contiene fecha hora, me sale un caos.

SELECT idpersona FROM tabla1
WHERE fhinicio=(SELECT MIN(fhinicio) FROM tabla1)

Alguna idea?

Gracias!!!

Saludos.

Preguntas similare

Leer las respuestas

#1 Salvador Ramos
13/12/2005 - 09:18 | Informe spam
Hola,

Puedes hacer un GROUP BY sólo por la fecha, para ello debes utilizar las
funciones CAST o CONVERT y/o funciones de fechas, hay múltiples soluciones,
te paso una que utilizo para convertir un dato fecha a numérico (AAAAMMDD).

YEAR(Fecha)*10000 + MONTH(Fecha)*100 + DATEPART(dd, Fecha)

Un saludo
Salvador Ramos
Murcia - España

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


"Mendez" escribió en el mensaje
news:url5Rj7$
Hola gente!

Pues vereis, llevo dandole vueltas a una consulta que lleva un agrupado
por fechas.

El tema es, sacar el primer registro de cada dia, y como no tengo la
funcion de agregado FIRST, pues no se muy bien como hacerlo.

He encontrado soluciones por ahi, pero claro, me devuelven el primero en
general, pero no el primero de cada dia, pues si lo agrupo por la fecha,
como contiene fecha hora, me sale un caos.

SELECT idpersona FROM tabla1
WHERE fhinicio=(SELECT MIN(fhinicio) FROM tabla1)

Alguna idea?

Gracias!!!

Saludos.
Respuesta Responder a este mensaje
#2 Mendez
13/12/2005 - 10:38 | Informe spam
Muchas gracias!

Voy a probarlo ahora mismo.

Saludos.

Salvador Ramos wrote:
Hola,

Puedes hacer un GROUP BY sólo por la fecha, para ello debes utilizar las
funciones CAST o CONVERT y/o funciones de fechas, hay múltiples soluciones,
te paso una que utilizo para convertir un dato fecha a numérico (AAAAMMDD).

YEAR(Fecha)*10000 + MONTH(Fecha)*100 + DATEPART(dd, Fecha)

Respuesta Responder a este mensaje
#3 Alejandro Mesa
13/12/2005 - 15:15 | Informe spam
Salvador,

Tambien podemos usar la expresion:

cast(convert(char(8), getdate(), 112) as int)

aunque para este tipo de sentencias prefiero:

select *
from t1 as a
where fhinicio = (select min(fhinicio) from t1 as b where b.idpersona =
a.idpersona )
go

Saludos,

Alejandro

"Salvador Ramos" wrote:

Hola,

Puedes hacer un GROUP BY sólo por la fecha, para ello debes utilizar las
funciones CAST o CONVERT y/o funciones de fechas, hay múltiples soluciones,
te paso una que utilizo para convertir un dato fecha a numérico (AAAAMMDD).

YEAR(Fecha)*10000 + MONTH(Fecha)*100 + DATEPART(dd, Fecha)

Un saludo
Salvador Ramos
Murcia - España

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


"Mendez" escribió en el mensaje
news:url5Rj7$
> Hola gente!
>
> Pues vereis, llevo dandole vueltas a una consulta que lleva un agrupado
> por fechas.
>
> El tema es, sacar el primer registro de cada dia, y como no tengo la
> funcion de agregado FIRST, pues no se muy bien como hacerlo.
>
> He encontrado soluciones por ahi, pero claro, me devuelven el primero en
> general, pero no el primero de cada dia, pues si lo agrupo por la fecha,
> como contiene fecha hora, me sale un caos.
>
> SELECT idpersona FROM tabla1
> WHERE fhinicio=(SELECT MIN(fhinicio) FROM tabla1)
>
> Alguna idea?
>
> Gracias!!!
>
> Saludos.



Respuesta Responder a este mensaje
#4 Salvador Ramos
13/12/2005 - 15:43 | Informe spam
Si, claro, coincido contigo es más directo, por eso hice referencia a CAST y
CONVERT. Con el ejemplo más que nada quería hacerle ver una de las múltiples
posibilidades de conseguirlo con funciones de fecha y hora, aunque no era la
más apropiada para el caso.
Debería haber puesto también la forma que tu indicas :-)

Un saludo
Salvador Ramos
Murcia - España

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


"Alejandro Mesa" escribió en el
mensaje news:
Salvador,

Tambien podemos usar la expresion:

cast(convert(char(8), getdate(), 112) as int)

aunque para este tipo de sentencias prefiero:

select *
from t1 as a
where fhinicio = (select min(fhinicio) from t1 as b where b.idpersona > a.idpersona )
go

Saludos,

Alejandro

"Salvador Ramos" wrote:

Hola,

Puedes hacer un GROUP BY sólo por la fecha, para ello debes utilizar las
funciones CAST o CONVERT y/o funciones de fechas, hay múltiples
soluciones,
te paso una que utilizo para convertir un dato fecha a numérico
(AAAAMMDD).

YEAR(Fecha)*10000 + MONTH(Fecha)*100 + DATEPART(dd, Fecha)

Un saludo
Salvador Ramos
Murcia - España

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


"Mendez" escribió en el mensaje
news:url5Rj7$
> Hola gente!
>
> Pues vereis, llevo dandole vueltas a una consulta que lleva un agrupado
> por fechas.
>
> El tema es, sacar el primer registro de cada dia, y como no tengo la
> funcion de agregado FIRST, pues no se muy bien como hacerlo.
>
> He encontrado soluciones por ahi, pero claro, me devuelven el primero
> en
> general, pero no el primero de cada dia, pues si lo agrupo por la
> fecha,
> como contiene fecha hora, me sale un caos.
>
> SELECT idpersona FROM tabla1
> WHERE fhinicio=(SELECT MIN(fhinicio) FROM tabla1)
>
> Alguna idea?
>
> Gracias!!!
>
> Saludos.



Respuesta Responder a este mensaje
#5 Alejandro Mesa
13/12/2005 - 16:10 | Informe spam
Salvador,

Solo fue un comentario.

Saludos,

Alejandro

"Salvador Ramos" wrote:

Si, claro, coincido contigo es más directo, por eso hice referencia a CAST y
CONVERT. Con el ejemplo más que nada quería hacerle ver una de las múltiples
posibilidades de conseguirlo con funciones de fecha y hora, aunque no era la
más apropiada para el caso.
Debería haber puesto también la forma que tu indicas :-)

Un saludo
Salvador Ramos
Murcia - España

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


"Alejandro Mesa" escribió en el
mensaje news:
> Salvador,
>
> Tambien podemos usar la expresion:
>
> cast(convert(char(8), getdate(), 112) as int)
>
> aunque para este tipo de sentencias prefiero:
>
> select *
> from t1 as a
> where fhinicio = (select min(fhinicio) from t1 as b where b.idpersona > > a.idpersona )
> go
>
> Saludos,
>
> Alejandro
>
> "Salvador Ramos" wrote:
>
>> Hola,
>>
>> Puedes hacer un GROUP BY sólo por la fecha, para ello debes utilizar las
>> funciones CAST o CONVERT y/o funciones de fechas, hay múltiples
>> soluciones,
>> te paso una que utilizo para convertir un dato fecha a numérico
>> (AAAAMMDD).
>>
>> YEAR(Fecha)*10000 + MONTH(Fecha)*100 + DATEPART(dd, Fecha)
>>
>> Un saludo
>> Salvador Ramos
>> Murcia - España
>>
>> [Microsoft MVP SQL Server]
>> www.helpdna.net (información sobre SQL Server y .NET)
>>
>>
>> "Mendez" escribió en el mensaje
>> news:url5Rj7$
>> > Hola gente!
>> >
>> > Pues vereis, llevo dandole vueltas a una consulta que lleva un agrupado
>> > por fechas.
>> >
>> > El tema es, sacar el primer registro de cada dia, y como no tengo la
>> > funcion de agregado FIRST, pues no se muy bien como hacerlo.
>> >
>> > He encontrado soluciones por ahi, pero claro, me devuelven el primero
>> > en
>> > general, pero no el primero de cada dia, pues si lo agrupo por la
>> > fecha,
>> > como contiene fecha hora, me sale un caos.
>> >
>> > SELECT idpersona FROM tabla1
>> > WHERE fhinicio=(SELECT MIN(fhinicio) FROM tabla1)
>> >
>> > Alguna idea?
>> >
>> > Gracias!!!
>> >
>> > Saludos.
>>
>>
>>



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