Consulta evaluando datos de distintos registros

29/05/2007 - 15:25 por Claudio | Informe spam
Hola:
Necesito ayuda para poder resolver una consulta que debe evaluar datos de
distintos registros, paso a expliarles un ejemplo.
Tengo la siguente tabla con los siguientes campos:

Legajo categoria fecha
1 A 2007/01/01
1 B 2007/02/05
1 C 2007/05/01
2 A 2007/02/01
2 C 2007/05/01
...

Lo que necesito es saber por cada legajo cuanto tiempo (dias) ha estado en
cada categoría, se que haciendo un procedimiento lo puedo sacar pero si se
puede hacer con select... mejor.

Gracias y saludos,
Claudio.

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
29/05/2007 - 15:56 | Informe spam
Claudio,

Cual version de SQL Server estas usando?

;with cte_1
as
(
select
Legajo,
categoria,
fecha,
row_number() over(partition by legajo order by fecha) as rn
from
dbo.t1
),
cte_2
as
(
select
a.legajo,
a.categoria,
datediff(day, a.fecha, isnull(b.fecha, getdate())) as dias
from
cte_1 as a
left join
cte_1 as b
on a.legajo = b.legajo
and a.rn = b.rn - 1
)
select
legajo,
categoria,
sum(dias) as sum_dias
from
cte_2
group by
legajo,
categoria
go


AMB

"Claudio" wrote:

Hola:
Necesito ayuda para poder resolver una consulta que debe evaluar datos de
distintos registros, paso a expliarles un ejemplo.
Tengo la siguente tabla con los siguientes campos:

Legajo categoria fecha
1 A 2007/01/01
1 B 2007/02/05
1 C 2007/05/01
2 A 2007/02/01
2 C 2007/05/01
...

Lo que necesito es saber por cada legajo cuanto tiempo (dias) ha estado en
cada categoría, se que haciendo un procedimiento lo puedo sacar pero si se
puede hacer con select... mejor.

Gracias y saludos,
Claudio.
Respuesta Responder a este mensaje
#2 Claudio
29/05/2007 - 20:46 | Informe spam
Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05
Copyright (c) 1988-2003 Microsoft Corporation Developer Edition on Windows
NT 5.0 (Build 2195: Service Pack 4)


"Alejandro Mesa" wrote:

Claudio,

Cual version de SQL Server estas usando?

;with cte_1
as
(
select
Legajo,
categoria,
fecha,
row_number() over(partition by legajo order by fecha) as rn
from
dbo.t1
),
cte_2
as
(
select
a.legajo,
a.categoria,
datediff(day, a.fecha, isnull(b.fecha, getdate())) as dias
from
cte_1 as a
left join
cte_1 as b
on a.legajo = b.legajo
and a.rn = b.rn - 1
)
select
legajo,
categoria,
sum(dias) as sum_dias
from
cte_2
group by
legajo,
categoria
go


AMB

"Claudio" wrote:

> Hola:
> Necesito ayuda para poder resolver una consulta que debe evaluar datos de
> distintos registros, paso a expliarles un ejemplo.
> Tengo la siguente tabla con los siguientes campos:
>
> Legajo categoria fecha
> 1 A 2007/01/01
> 1 B 2007/02/05
> 1 C 2007/05/01
> 2 A 2007/02/01
> 2 C 2007/05/01
> ...
>
> Lo que necesito es saber por cada legajo cuanto tiempo (dias) ha estado en
> cada categoría, se que haciendo un procedimiento lo puedo sacar pero si se
> puede hacer con select... mejor.
>
> Gracias y saludos,
> Claudio.
Respuesta Responder a este mensaje
#3 Claudio
29/05/2007 - 20:59 | Informe spam
Alejandro, te paso lo que me pediste y me parece que row_number() no esta
soportado.

Microsoft SQL Server 2000 - 8.00.760 (Intel X86) Dec 17 2002 14:22:05
Copyright (c) 1988-2003 Microsoft Corporation Developer Edition on Windows
NT 5.0 (Build 2195: Service Pack 4)

Claudio.

"Alejandro Mesa" wrote:

Claudio,

Cual version de SQL Server estas usando?

;with cte_1
as
(
select
Legajo,
categoria,
fecha,
row_number() over(partition by legajo order by fecha) as rn
from
dbo.t1
),
cte_2
as
(
select
a.legajo,
a.categoria,
datediff(day, a.fecha, isnull(b.fecha, getdate())) as dias
from
cte_1 as a
left join
cte_1 as b
on a.legajo = b.legajo
and a.rn = b.rn - 1
)
select
legajo,
categoria,
sum(dias) as sum_dias
from
cte_2
group by
legajo,
categoria
go


AMB

"Claudio" wrote:

> Hola:
> Necesito ayuda para poder resolver una consulta que debe evaluar datos de
> distintos registros, paso a expliarles un ejemplo.
> Tengo la siguente tabla con los siguientes campos:
>
> Legajo categoria fecha
> 1 A 2007/01/01
> 1 B 2007/02/05
> 1 C 2007/05/01
> 2 A 2007/02/01
> 2 C 2007/05/01
> ...
>
> Lo que necesito es saber por cada legajo cuanto tiempo (dias) ha estado en
> cada categoría, se que haciendo un procedimiento lo puedo sacar pero si se
> puede hacer con select... mejor.
>
> Gracias y saludos,
> Claudio.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida