SQL Server - Query que unifica algunos registros y otros no.

 
Vista:
sin imagen de perfil

Query que unifica algunos registros y otros no.

Publicado por MARKO (11 intervenciones) el 05/12/2013 19:04:39
saludos de nuevo LWP acudo a uds para pedir ayuda con un query

cuento con la tabla CargaHoraria que se compone de la sigueinte manera.


IdCargaHoraria--------------IdGen-------------------Fecha--------------Hora-------------Generado

302----------------------------------13-----------------30/11/2013---------10.00--------------3500.25

303----------------------------------13-----------------30/11/2013---------11.00---------------3000.25

304----------------------------------13-----------------30/11/2013---------11.30----------------3200.15 <------

305----------------------------------13-----------------30/11/2013----------12.00---------------3500.25 <------


306----------------------------------13-----------------30/11/2013----------13.00-----------------3500.25
.
.

602----------------------------------25-----------------30/11/2013---------10.00--------------------500.25

603----------------------------------25-----------------30/11/2013---------11.00--------------------300.00

604----------------------------------25-----------------30/11/2013---------11.30--------------------200.15 <------

605----------------------------------25-----------------30/11/2013----------12.00-------------------500.25 <------


606----------------------------------25-----------------30/11/2013----------13.00-------------------400.25
.
.
.
lo que necesito es que se listen los datos de la tabla IdGen, Fecha, Hora, Generado con la OBSERVACIÓN de que en vez de mostrar la generación de las 11.30 y 12 se muestre unicamente el promedio de la generación de estas dos horas y se listen como la generación de la hora 12 así:



IdGen-------------------Fecha--------------Hora-------------Generado

13-----------------30/11/2013-------------10.00--------------3500.25

13-----------------30/11/2013-------------11.00---------------3000.25

13-----------------30/11/2013---------12.00---------------3350.20 <------ promedio de la generación de 11.30 y 12 del idgen 13

13-----------------30/11/2013-------------13.00-----------------3500.25
.
.
.
.

25-----------------30/11/2013---------10.00--------------------500.25

25-----------------30/11/2013---------11.00--------------------300.00

25-----------------30/11/2013----------12.00-------------------350.20 <------ promedio de la generación de 11.30 y 12 del idgen 25

25-----------------30/11/2013----------10.00-------------------400.25
.
.
.
claro está hay mas idgens (320) y se necesita hacer este query para que calcule el la generación de la hora 12 (promedio entre la hora 11.30 y 12) para todos ellos.

como dato adicional agrego que la fecha es un solo día.

gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Query que unifica algunos registros y otros no.

Publicado por jams (93 intervenciones) el 05/12/2013 22:04:51
Hola Marko esta pudiera ser una solucion ojala y te sirva


declare @tabla table(idcargahoraria int,idgen int, fecha datetime, hora time, generado float)

insert into @tabla values(302,13,'2013-11-30','10:00',3500.25)
insert into @tabla values(303,13,'2013-11-30','11:00',3000.25)
insert into @tabla values(304,13,'2013-11-30','11:30',3200.15)
insert into @tabla values(305,13,'2013-11-30','12:00',3500.25)
insert into @tabla values(306,13,'2013-11-30','12:30',3500.25)

insert into @tabla values(602,25,'2013-11-30','10:00',500.25)
insert into @tabla values(602,25,'2013-11-30','11:00',300.00)
insert into @tabla values(602,25,'2013-11-30','11:30',200.15)
insert into @tabla values(602,25,'2013-11-30','12:00',500.25)
insert into @tabla values(602,25,'2013-11-30','12:30',400.25)


select * from
(
select
idcargahoraria,
idgen,
fecha,
hora,
case when hora between '11:30' and '12:00' then (select SUM(generado)/2 from @tabla A where hora between '11:30' and '12:00' and A.idgen=B.idgen) else generado end as generado
from @tabla B
)x

where hora not in ('11:30')


Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Query que unifica algunos registros y otros no.

Publicado por MARKO (11 intervenciones) el 05/12/2013 23:36:48
Gracias por la pronta respuesta.

el query que propones si lista la hora 12 pero la cantidad que lista en Generado no corresponde al promedio entre la hora 11.30 y 12.00

en el parrafo anterior comenté que los datos son de un solo día pero olvidé mencionar que en la tabla existen datos hora a hora, dia a día de hace 10 años, creo que eso es lo que hace que el promedio no se esté haciendo entre las horas 11.30 y 12.00 de EL MISMO DÍA.

¿me podrian ayudar, tomando en cuenta este detalle?

Gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar