Consulta ordenada cada 5 semanas

19/01/2004 - 12:53 por Miguel | Informe spam
Hola,
tengo q hacer una consulta cogiendo los resultados del año pasado, agrupados
en períodos de 5 semanas... ¿cómo lo puedo hacer?
Muchas gracias
Un saludo

Preguntas similare

Leer las respuestas

#1 Miguel
19/01/2004 - 13:15 | Informe spam
Hola,
lo estoy intentando así:

select datepart(wk, fecha) as semana, operador.nombre, operador,
count(numreg) as servicios
from extras, operador
where fecha>'2003-01-01' and operador.codigo=operador
group by fecha, operador, operador.nombre
having (datepart(wk, fecha) % 5=0)
order by semana, operador, servicios

pero me saca operador repetido, imagino q por cada dia... ¿como hacer q sume
lo de cada 5 semanas? Joe, me estoy volviendo picha...
Un saludo
Respuesta Responder a este mensaje
#2 ulises
19/01/2004 - 16:17 | Informe spam
No indicas la estructura de tus tablas, pero podrìas tomar el
siguiente código como ejemplo :

CREATE TABLE operador ( codoper int, codnombre char(30) )
CREATE TABLE extras ( fecha datetime, codoper int , numreg int )
go
INSERT INTO operador VALUES ( 1, 'OPERADOR1' )
INSERT INTO operador VALUES ( 2, 'OPERADOR2' )
go
INSERT INTO extras VALUES ( '20040101',1,10 )
INSERT INTO extras VALUES ( '20040201',1,20 )
INSERT INTO extras VALUES ( '20040301',1,30 )
INSERT INTO extras VALUES ( '20040401',1,40 )
INSERT INTO extras VALUES ( '20040501',1,50 )
INSERT INTO extras VALUES ( '20040601',1,60 )
INSERT INTO extras VALUES ( '20040101',2,10 )
INSERT INTO extras VALUES ( '20040102',2,20 )
INSERT INTO extras VALUES ( '20040103',2,30 )
INSERT INTO extras VALUES ( '20040401',2,40 )
INSERT INTO extras VALUES ( '20040501',2,50 )
INSERT INTO extras VALUES ( '20040601',2,60 )
go
SELECT CAST((DATEPART(wk,fecha)-1)/5 + 1 as integer) as semana,
codnombre,
SUM(numreg) as servicios
FROM operador a left join extras b on ( a.codoper = b.codoper )
GROUP BY CAST((DATEPART(wk,fecha)-1)/5 + 1 as integer), codnombre
go

Revisalo a ver si te ayuda en algo.

Saludos,
Ulises

On Mon, 19 Jan 2004 13:15:35 +0100, "Miguel"
<####m_tubiaARROBAhotmail.com###> wrote:

Hola,
lo estoy intentando así:

select datepart(wk, fecha) as semana, operador.nombre, operador,
count(numreg) as servicios
from extras, operador
where fecha>'2003-01-01' and operador.codigo=operador
group by fecha, operador, operador.nombre
having (datepart(wk, fecha) % 5=0)
order by semana, operador, servicios

pero me saca operador repetido, imagino q por cada dia... ¿como hacer q sume
lo de cada 5 semanas? Joe, me estoy volviendo picha...
Un saludo

Respuesta Responder a este mensaje
#3 Miguel
20/01/2004 - 10:45 | Informe spam
Hola,
gracias por contestar. He estado mirando y a partir de tu consulta parece q
sí me lo saca:

SELECT CAST((DATEPART(wk,fecha)-1)/5 + 1 as integer) as periodo, a.nombre,
count(*) as servicios
FROM operador a left join extras b on ( a.codigo = b.operador )
GROUP BY CAST((DATEPART(wk,fecha)-1)/5 + 1 as integer), a.nombre
order by a.nombre, periodo

Pero, ¿se puede hacer q me de las fechas de inicio y final del período?
La estructura de las tablas (perdon por no darlas) es (los campos básicos):

CREATE TABLE operador ( codigo smallint, nombre varchar(35) )
CREATE TABLE extras ( fecha datetime, operador smallint)

en la anterior consulta habia puesto un sum(numreg) pero está mal. Lo q hace
la tabla es almacenar cada uno de los servicios q se hacen, junto con el
operador q lo informatiza, y se quiere saber, por perídos de 5 semanas,
cuantos servicios informatiza un operador (aunq esto parece q lo hace,
quizás así aclare más lo q pedía).
Muchas gracias por todo
Un saludo
Respuesta Responder a este mensaje
#4 Miguel Egea
31/01/2004 - 17:04 | Informe spam
si el inicio de la semana lo tienes en la tabla, puedes sacarlo con
max(fecha) y con min(fecha), Si no es así, habría que darle una vueltecita
más, pero se podría.si lo necesitas cuentamelo y lo expongo.

Saludos
Miguel Egea
"Miguel" <####m_tubiaARROBAhotmail.com###> escribió en el mensaje
news:
Hola,
gracias por contestar. He estado mirando y a partir de tu consulta parece


q
sí me lo saca:

SELECT CAST((DATEPART(wk,fecha)-1)/5 + 1 as integer) as periodo, a.nombre,
count(*) as servicios
FROM operador a left join extras b on ( a.codigo = b.operador )
GROUP BY CAST((DATEPART(wk,fecha)-1)/5 + 1 as integer), a.nombre
order by a.nombre, periodo

Pero, ¿se puede hacer q me de las fechas de inicio y final del período?
La estructura de las tablas (perdon por no darlas) es (los campos


básicos):

CREATE TABLE operador ( codigo smallint, nombre varchar(35) )
CREATE TABLE extras ( fecha datetime, operador smallint)

en la anterior consulta habia puesto un sum(numreg) pero está mal. Lo q


hace
la tabla es almacenar cada uno de los servicios q se hacen, junto con el
operador q lo informatiza, y se quiere saber, por perídos de 5 semanas,
cuantos servicios informatiza un operador (aunq esto parece q lo hace,
quizás así aclare más lo q pedía).
Muchas gracias por todo
Un saludo



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