Tema: help me!!!
Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/08/2007, 13:12
Avatar de zeusdelolimpo
zeusdelolimpo
 
Fecha de Ingreso: agosto-2007
Mensajes: 54
Antigüedad: 16 años, 9 meses
Puntos: 0
De acuerdo Re: help me!!!

Muchas GRACIAS Adres95, todo estubo bien

Solo tube que hacerle unas modificaciones (ya que mi maquina si estan los nombres en mayusculas pues...) y quedo asi mira:

Código:
Select A.EMPLID
      ,A.LAST_NAME
      ,A.SECOND_LAST_NAME
      ,A.FIRST_NAME
      ,A.MIDDLE_NAME
      ,A.BIRTHDATE
      ,A.MAR_STATUS
      ,A.SEX
      --------------------
      ,B.EFFDT
      ,B.EFFSEQ
      ,B.HOURLY_RT
      ,B.CURRENCY_CD
      ,B.PAYGROUP
      ,B.COMPANY
      ,B.GL_PAY_TYPE
      ,B.[ACTION]
      ,B.ACTION_REASON
      ,B.EFFDT
      ,B.ANNUAL_RT
      ,B.DEPTID
      ,B.FLSA_STATUS
      --------------------
      ,isnull((Select Top 1 NATIONAL_ID_TYPE From PS_PERS_NID  Where  EMPLID = A.EMPLID),'')  AS NATIONAL_ID_TYPE
      --------------------
      ,D.EFFDT
      ,D.SWT_MAR_STATUS
      --------------------
      ,E.EFFDT
      ,E.ADDRESS1
      ,E.ADDRESS2
      ,E.CITY
      ,E.COUNTRY
      ,E.POSTAL
      --------------------
      ,isnull((Select Top 1 PHONE From PS_EMERGENCY_CNTCT  Where  EMPLID = A.EMPLID),'')  AS PHONE
From  PS_PERSONAL_DATA  A
Left outer join
     (Select Jobs.EMPLID
            ,Jobs.HOURLY_RT
            ,Jobs.CURRENCY_CD
            ,Jobs.PAYGROUP
            ,Jobs.COMPANY
            ,Jobs.GL_PAY_TYPE
            ,Jobs.ACTION
            ,Jobs.ACTION_REASON
            ,Jobs.EFFDT
            ,Jobs.EFFSEQ
            ,Jobs.ANNUAL_RT
            ,Jobs.DEPTID
            ,Jobs.FLSA_STATUS
     From    PS_JOB Jobs
     Inner join
           (SELECT EMPLID, MAX(EFFDT) EFFDT FROM PS_JOB P Group By EMPLID) JobsMax
     On    Jobs.EMPLID = JobsMax.EMPLID  And
           Jobs.EFFDT  = JobsMax.EFFDT) B
On   A.EMPLID = B.EMPLID
Left outer join
     (Select  Taxes.EMPLID
             ,Taxes.SWT_MAR_STATUS
             ,Taxes.EFFDT
      From    PS_STATE_TAX_DATA Taxes
      Inner join
              (SELECT EMPLID, MAX(EFFDT) EFFDT FROM PS_STATE_TAX_DATA Group By EMPLID) TaxesMax
      On      Taxes.EMPLID = TaxesMax.EMPLID   And
              Taxes.EFFDT  = TaxesMax.EFFDT) D
On   A.EMPLID = D.EMPLID
Left outer join
     (Select Address.EMPLID
            ,Address.EFFDT
            ,Address.ADDRESS1
            ,Address.ADDRESS2
            ,Address.CITY
            ,Address.COUNTRY
            ,Address.POSTAL   
     From    PS_ADDRESSES Address
     Inner join
             (SELECT EMPLID, MAX(EFFDT)EFFDT FROM PS_STATE_TAX_DATA Group By EMPLID) AddressMax
     On      Address.EMPLID = AddressMax.EMPLID   And
             Address.EFFDT  = AddressMax.EFFDT) E
On   A.EMPLID = E.EMPLID
Si te abras dado cuenta quite los campos que agregaste (gracias) "EFFDT" Y "EFFSEQ" por que en algunas de las tablas donde las agregaste no estaban y pues me sacaba un error...

Ahora, la tabla de PS_PERSONAL_DATA tiene 8028 registros y la consulta que tu me mandas (gracias) me manda 8410 registros por la siguiente razon:

Al mandar:

Código:
(SELECT EMPLID, MAX(EFFDT) EFFDT FROM PS_JOB P Group By EMPLID) JobsMax
     On    Jobs.EMPLID = JobsMax.EMPLID  And
           Jobs.EFFDT  = JobsMax.EFFDT
No me trae registros repetidos (exelente, gracias) pero solo tomando en cuenta "EFFDT" esto es si yo tengo una serie de registros asi:

EMPLID EFFDT

L00001 2004-01-23
L00001 2004-01-23
L00001 1995-01-22
L00001 1996-01-07
L00001 1996-02-02
L00001 1997-02-02
L00001 1998-02-01
L00001 2000-01-16

Me da esto:

EMPLID EFFDT

L00001 2004-01-23
L00001 2004-01-23

Por que los dos tienen la fecha maxima Pero hay otro campo que s puede utilizar como llave que es el de "EFFSEQ" yo supongo que puedo utilizar el mismo codigo que se utiliza para "EFFDT" masomenos asi

Código:
(SELECT EMPLID, MAX(EFFSEQ) EFFSEQ FROM PS_JOB P Group By EMPLID) JobsMax
     On    Jobs.EMPLID = JobsMax.EMPLID  And
           Jobs.EFFDT  = JobsMax.EFFSEQ)
por que tambien tiene un numero consecutivo la secuencia efectiva "EFFSEQ" si hay mas de una fecha efectiva "EFFDT" .

ojala me haya explicado con tanta tonteria y espero su respuesta MASTER

salu2