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

#1 Alejandro Mesa
12/09/2005 - 15:01 | Informe spam
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



Respuesta Responder a este mensaje
#2 Joan Q.
12/09/2005 - 15:33 | Informe spam
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
>
>
>
Respuesta Responder a este mensaje
#3 Alejandro Mesa
12/09/2005 - 15:41 | Informe spam
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
> >
> >
> >



Respuesta Responder a este mensaje
#4 Joan Q.
12/09/2005 - 15:50 | Informe spam
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
> > >
> > >
> > >
>
>
>
Respuesta Responder a este mensaje
#5 Alejandro Mesa
12/09/2005 - 16:19 | Informe spam
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
> > > >
> > > >
> > > >
> >
> >
> >



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida