Una sola linea

12/09/2005 - 13:46 por Joan Q. | Informe spam
Hola a todos/as

Si pongo



declare @a datetime

declare @b datetime

set @a = '20040801'

set @b = '20050731'



select t.nombre, (pm.dias1 + pm.dias2 + pm.dias3)



from pagastrabajadordatosit pm



inner join trabajadores t

on pm.codigoempresa = t.codigoempresa

and pm.cod_trabajador = t.cod_trabajador





where pm.f_paga between @a and @b



group by t.nombre, pm.dias1, pm.dias2, pm.dias3



compute sum (pm.dias1 + pm.dias2 + pm.dias3) by t.nombre





Tengo el resultado:



nombre


Pepito 0

sum

=
0



nombre


Fulanito 0

Fulanito 1

Fulanito 3

Fulanito 3

Fulanito 4

sum

=
11

nombre


Menganito 0

Menganito 25

sum

=
25



¿Cómo puedo hacer para que mes salga una sola linea con el t.nombre y la
suma por trabajador de los conceptos?



Gracias

Preguntas similare

Leer las respuestas

#6 Joan Q.
13/09/2005 - 09:09 | Informe spam
Muchas gracias por la observación porque se me había pasado por alto. Creía
que necesariamente todos los elementos del select debían estar en también en
el group by.
Muchas gracias.
Joan Q
"Alejandro Mesa" escribió en el
mensaje news:
Joan,

Puedes postear la sentencia que estas usando?

Fijate que estoy usando la function de grupo SUM.

> > select
> > t.nombre,
> > sum(pm.dias1 + pm.dias2 + pm.dias3)


AMB

"Joan Q." wrote:

> Me dice para pm.dias1, pm.dias2, pm.dias3
> La columna 'pm.Dias1' de la lista de selección no es válida, porque no


está
> contenida en una función de agregado ni en la cláusula GROUP BY.
>
> "Alejandro Mesa" escribió en


el
> mensaje news:
> > Trata:
> >
> > select
> > t.nombre,
> > sum(pm.dias1 + pm.dias2 + pm.dias3)
> > from
> > pagastrabajadordatosit pm
> > inner join
> > trabajadores t
> > on pm.codigoempresa = t.codigoempresa
> > and pm.cod_trabajador = t.cod_trabajador
> > where
> > pm.f_paga between @a and @b
> > group by
> > t.nombre
> >
> >
> > AMB
> >
> > "Joan Q." wrote:
> >
> > > Gracias Alejandro por contestar.
> > > Bueno, estructura de tablas, datos, etc los tengo en un select que


coge
> > > muchos join y había simplificado haciendo un select virtual.
> > > La pregunta en realidad es muy sencilla
> > >
> > > Quiero el resultado
> > >
> > >
> > >
> > > nombre
> > > Pepito 0
> > > Fulanito 11
> > > Menganito 25
> > >
> > >
> > > Es decir hacer un select de la suma de datos pm.dias1, pm.dias2, etc


que
> > > corresponden a datos de pagas pagadas a trabajadores en un periodo


de
> tiempo
> > > concreto, y puede haber ninguna o varias pagas con estos datos. Como
> utilizo
> > > estos campos no puedo hacer un group by por nombre trabajador sinó


que
> tinee
> > > que ser group by por nombre trabajador y por pm.dias1, pm.dias2, etc


con
> lo
> > > que sigo teniendo tantas lineas como pagas distintas en las que
> intervienen
> > > algun om.dias1, pm.dias2. No sé si me explico
> > >
> > > Joan Q
> > >
> > >
> > >
> > >
> > > "Alejandro Mesa" escribió


en
> el
> > > mensaje news:
> > > > Joan,
> > > >
> > > > Puedes postear un ejemplo de como queires el resultado y de ser
> posible,
> > > la
> > > > estructura de las tablas y unos datos de ejemplos?
> > > >
> > > >
> > > > AMB
> > > >
> > > > "Joan Q." wrote:
> > > >
> > > > > Hola a todos/as
> > > > >
> > > > > Si pongo
> > > > >
> > > > >
> > > > >
> > > > > declare @a datetime
> > > > >
> > > > > declare @b datetime
> > > > >
> > > > > set @a = '20040801'
> > > > >
> > > > > set @b = '20050731'
> > > > >
> > > > >
> > > > >
> > > > > select t.nombre, (pm.dias1 + pm.dias2 + pm.dias3)
> > > > >
> > > > >
> > > > >
> > > > > from pagastrabajadordatosit pm
> > > > >
> > > > >
> > > > >
> > > > > inner join trabajadores t
> > > > >
> > > > > on pm.codigoempresa = t.codigoempresa
> > > > >
> > > > > and pm.cod_trabajador = t.cod_trabajador
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > where pm.f_paga between @a and @b
> > > > >
> > > > >
> > > > >
> > > > > group by t.nombre, pm.dias1, pm.dias2, pm.dias3
> > > > >
> > > > >
> > > > >
> > > > > compute sum (pm.dias1 + pm.dias2 + pm.dias3) by t.nombre
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > Tengo el resultado:
> > > > >
> > > > >
> > > > >
> > > > > nombre
> > > > >
> > > > >
> > > > > Pepito 0
> > > > >
> > > > > sum
> > > > >
> > > > > => > > > > >
> > > > > 0
> > > > >
> > > > >
> > > > >
> > > > > nombre
> > > > >
> > > > >
> > > > > Fulanito 0
> > > > >
> > > > > Fulanito 1
> > > > >
> > > > > Fulanito 3
> > > > >
> > > > > Fulanito 3
> > > > >
> > > > > Fulanito 4
> > > > >
> > > > > sum
> > > > >
> > > > > => > > > > >
> > > > > 11
> > > > >
> > > > > nombre
> > > > >
> > > > >
> > > > > Menganito 0
> > > > >
> > > > > Menganito 25
> > > > >
> > > > > sum
> > > > >
> > > > > => > > > > >
> > > > > 25
> > > > >
> > > > >
> > > > >
> > > > > ¿Cómo puedo hacer para que mes salga una sola linea con el


t.nombre
> y la
> > > > > suma por trabajador de los conceptos?
> > > > >
> > > > >
> > > > >
> > > > > Gracias
> > > > >
> > > > >
> > > > >
> > >
> > >
> > >
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida