consulta

15/04/2005 - 11:17 por Joan Q. | Informe spam
Hola a todos/as

Una vez más abuso de vuestra amabilidad y disposición por una consulta que
se me antojaba relativamente fácil pero en la que he quedado atascado.
Joan Q

Dada la sentencia:

declare @a datetime
declare @z datetime
set @a = '20050101'
set @z = '20050131'

select t.nombre
,convert(char(12), p.f_paga, 105) as data

from trabajadores t

inner join pagastrabajador p
on t.codigoempresa = p.codigoempresa
and t.cod_trabajador = p.cod_trabajador
and p.t_paga = 1
and (p.f_paga between @a and @z)
and p.cod_centro in (1,5,7,8,13,15,16)

where t.codigoempresa = 716
and p.f_paga between @a and @z
and t.clavepercepcion <> 'g'
and ((datename (month, t.f_baja ) <> datename(month, @z)) or (t.f_baja is
null))

order by t.nombre

_____________________________
Resultado:

- Pepito 15-01-2005
- Pepito 31-01-2005
- Juan 23-01-2005
- José 30-01-2005
- José 31-01-2005
________________________________

Lo que quiero es que me regrese el trabajador con la fecha de una paga, en
caso de que haya más de una con la de fecha más reciente.
 

Leer las respuestas

#1 Keyhelp
15/04/2005 - 11:17 | Informe spam
Prueba lo siguiente:
declare @a datetime
declare @z datetime
set @a = '20050101'
set @z = '20050131'

select t.nombre
,Max(convert(char(12), p.f_paga, 105)) as data
from trabajadores t
inner join pagastrabajador p
on t.codigoempresa = p.codigoempresa
and t.cod_trabajador = p.cod_trabajador
and p.t_paga = 1
and (p.f_paga between @a and @z)
and p.cod_centro in (1,5,7,8,13,15,16)
where t.codigoempresa = 716
and p.f_paga between @a and @z
and t.clavepercepcion <> 'g'
and ((datename (month, t.f_baja ) <> datename(month, @z)) or (t.f_baja is
null))

order by t.nombre
group by t.nombre

"Joan Q." escribió en el mensaje
news:
Hola a todos/as

Una vez más abuso de vuestra amabilidad y disposición por una consulta que
se me antojaba relativamente fácil pero en la que he quedado atascado.
Joan Q

Dada la sentencia:

declare @a datetime
declare @z datetime
set @a = '20050101'
set @z = '20050131'

select t.nombre
,convert(char(12), p.f_paga, 105) as data

from trabajadores t

inner join pagastrabajador p
on t.codigoempresa = p.codigoempresa
and t.cod_trabajador = p.cod_trabajador
and p.t_paga = 1
and (p.f_paga between @a and @z)
and p.cod_centro in (1,5,7,8,13,15,16)

where t.codigoempresa = 716
and p.f_paga between @a and @z
and t.clavepercepcion <> 'g'
and ((datename (month, t.f_baja ) <> datename(month, @z)) or (t.f_baja is
null))

order by t.nombre

_____________________________
Resultado:

- Pepito 15-01-2005
- Pepito 31-01-2005
- Juan 23-01-2005
- José 30-01-2005
- José 31-01-2005
________________________________

Lo que quiero es que me regrese el trabajador con la fecha de una paga, en
caso de que haya más de una con la de fecha más reciente.



Preguntas similares