group by

09/03/2007 - 17:43 por fredy | Informe spam
Hola grupo, resulta q tengo q realizar una vista de tal manera que no se si
es posible.
Resulta que tengo que coger datos de 2 tablas A y B por ej., de la B
necesito 2 campos (Fecha y Meses)
para cada registro de la tabla A necesito uno de la B. El problema es que en
la B puede haber más
de 1 q coincida, en este caso se deberá coger el q coincida con la fecha
mayor.
Lo que hago es hacer una agrupación y asignarle al campo Fecha la función
MAX para q me
devuelva el mayor, el problema es q me agrupa también por Meses con lo que
vuelve a devolverme para
cada registro de A varios de B. Existe alguna manera de dejar un campo
desagrupado (Meses) para
que me devuelva el que coincide con el de la fecha Máxima?

Realmente la vista consta de más tablas, aunque para simplificar he puesto
el ejemplo anterior.


Gracias.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
09/03/2007 - 17:59 | Informe spam
fredy,

Usa una tabla derivada o CTE si estas en 2005.

select
a.*, b.*
from
dbo.tu_tabla as a
inner join
(
select c1, max(fecha) as max_fecha
from dbo.t2
group by c1
) as b
on a.c1 = b.c1
go


AMB

"fredy" wrote:

Hola grupo, resulta q tengo q realizar una vista de tal manera que no se si
es posible.
Resulta que tengo que coger datos de 2 tablas A y B por ej., de la B
necesito 2 campos (Fecha y Meses)
para cada registro de la tabla A necesito uno de la B. El problema es que en
la B puede haber más
de 1 q coincida, en este caso se deberá coger el q coincida con la fecha
mayor.
Lo que hago es hacer una agrupación y asignarle al campo Fecha la función
MAX para q me
devuelva el mayor, el problema es q me agrupa también por Meses con lo que
vuelve a devolverme para
cada registro de A varios de B. Existe alguna manera de dejar un campo
desagrupado (Meses) para
que me devuelva el que coincide con el de la fecha Máxima?

Realmente la vista consta de más tablas, aunque para simplificar he puesto
el ejemplo anterior.


Gracias.



Respuesta Responder a este mensaje
#2 fredy
09/03/2007 - 21:13 | Informe spam
no estoy en 2005, es 2000.
Gracias.

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

Usa una tabla derivada o CTE si estas en 2005.

select
a.*, b.*
from
dbo.tu_tabla as a
inner join
(
select c1, max(fecha) as max_fecha
from dbo.t2
group by c1
) as b
on a.c1 = b.c1
go


AMB

"fredy" wrote:

Hola grupo, resulta q tengo q realizar una vista de tal manera que no se
si
es posible.
Resulta que tengo que coger datos de 2 tablas A y B por ej., de la B
necesito 2 campos (Fecha y Meses)
para cada registro de la tabla A necesito uno de la B. El problema es que
en
la B puede haber más
de 1 q coincida, en este caso se deberá coger el q coincida con la fecha
mayor.
Lo que hago es hacer una agrupación y asignarle al campo Fecha la función
MAX para q me
devuelva el mayor, el problema es q me agrupa también por Meses con lo
que
vuelve a devolverme para
cada registro de A varios de B. Existe alguna manera de dejar un campo
desagrupado (Meses) para
que me devuelva el que coincide con el de la fecha Máxima?

Realmente la vista consta de más tablas, aunque para simplificar he
puesto
el ejemplo anterior.


Gracias.



Respuesta Responder a este mensaje
#3 Alejandro Mesa
09/03/2007 - 22:40 | Informe spam
fredy,

Las tablas derivadas funcionan en 2000 tambien. Indique que si usas 2005
puedes crear una CTE.


AMB


"fredy" wrote:

no estoy en 2005, es 2000.
Gracias.

"Alejandro Mesa" escribió en el
mensaje news:
> fredy,
>
> Usa una tabla derivada o CTE si estas en 2005.
>
> select
> a.*, b.*
> from
> dbo.tu_tabla as a
> inner join
> (
> select c1, max(fecha) as max_fecha
> from dbo.t2
> group by c1
> ) as b
> on a.c1 = b.c1
> go
>
>
> AMB
>
> "fredy" wrote:
>
>> Hola grupo, resulta q tengo q realizar una vista de tal manera que no se
>> si
>> es posible.
>> Resulta que tengo que coger datos de 2 tablas A y B por ej., de la B
>> necesito 2 campos (Fecha y Meses)
>> para cada registro de la tabla A necesito uno de la B. El problema es que
>> en
>> la B puede haber más
>> de 1 q coincida, en este caso se deberá coger el q coincida con la fecha
>> mayor.
>> Lo que hago es hacer una agrupación y asignarle al campo Fecha la función
>> MAX para q me
>> devuelva el mayor, el problema es q me agrupa también por Meses con lo
>> que
>> vuelve a devolverme para
>> cada registro de A varios de B. Existe alguna manera de dejar un campo
>> desagrupado (Meses) para
>> que me devuelva el que coincide con el de la fecha Máxima?
>>
>> Realmente la vista consta de más tablas, aunque para simplificar he
>> puesto
>> el ejemplo anterior.
>>
>>
>> Gracias.
>>
>>
>>



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