ORACLE SQL: Как выбрать Max с предложением INNER JOIN и несколькими предложениями WHERE - PullRequest
0 голосов
/ 30 января 2020

У меня есть код ниже, который я уже написал. В таблице EMPLOYEE_EFF_DATE (поле) есть поле даты с именем EFF_DATE. Каждая запись, которая появляется в запросе SELECT ниже, должна извлекать данные с Max EFF_DATE из этой таблицы.

 SELECT 
     cd.CODE AS "OrganizationName"
     ,'Subscriber' as ContactType
     ,eed.LAST_NAME as LastName
     ,eed.FIRST_NAME as FirstName
     ,eed.MIDDLE_INIT MiddleName
     ,'' as PrefixName
     ,'' as SuffixName
     ,cs.REAL_SSN as SubscriberSocialSecurityNumber
     ,'' as EmployeeNumber
     ,'' as EmployeeType
     ,eed.Latest_hire_date as EmployeeHireDate
     ,cs.REAL_SSN as MemberSocialSecurityNumber
     ,aed.Address_1 as AddressLine1
     ,aed.Address_2 as AddressLine2
     ,aed.City
     ,aed.State
     ,aed.Zip as ZipCode
     ,aed.Country as CountryCode
     ,eed.BIRTHDATE as MemberDOB
     ,eed.SEX as MemberGender
     ,'' as MemberLanguage
     ,'' as MedicalPlan
     ,'' as MemberIDforMedicalPlan
     ,'' as DentalPlan
     ,'' as GeneralPurpose1
     ,'' as GeneralPurpose3
     ,aed.Telephone as HomeNumber
     ,'' as WorkNumber
     ,eed.EMAIL_ADDRESS as WorkEmailAddress
     ,'' as HomeEmailAddress
     ,'' as LocationCode
     ,'' as DashboardDrillDown
     ,'' as VisionPlan
     ,'' as RxPlan
     ,'' as MedicalTierLevelCoverage


 FROM

 EMPLOYEE_EFF_DATE eed

 INNER JOIN ADDRESS_EFF_DATE aed 
     ON eed.ssn = aed.ssn INNER JOIN COMP_SSN cs
     ON cs.ssn = eed.ssn INNER JOIN COMPANY_DETAIL cd
     ON eed.P_COMPANY_ID_I = cd.COMPANY_ID INNER JOIN COMPANY_EMPLOYMENT_DATA ced
     ON eed.SSN = ced.SSN 

     WHERE eed.P_COMPANY_ID_I = 114562164 
     AND aed.ADDRESS_KEY = 0 
     AND WORKMANS_COMP_EFF_DATE is NULL
     AND ced.STATUS_CODE in ('FTDM','FTREG','PTREG') 
     AND ced.DERIVED_FACTOR_1 in ('NA', 'N/A')

1 Ответ

0 голосов
/ 30 января 2020

Производные таблицы - это путь к go .. Замените ALL_FIELDS_IN_DT фактическими полями:

Select *ALL_FIELDS_IN_DT*, max(EFF_DATE)
FROM 
(
SELECT 
     cd.CODE AS "OrganizationName"
     ,'Subscriber' as ContactType
     ,eed.LAST_NAME as LastName
     ,eed.FIRST_NAME as FirstName
     ,eed.MIDDLE_INIT MiddleName,
     ,eed.EFF_DATE EFF_DATE,
     ,'' as PrefixName
     ,'' as SuffixName
     ,cs.REAL_SSN as SubscriberSocialSecurityNumber
     ,'' as EmployeeNumber
     ,'' as EmployeeType
     ,eed.Latest_hire_date as EmployeeHireDate
     ,cs.REAL_SSN as MemberSocialSecurityNumber
     ,aed.Address_1 as AddressLine1
     ,aed.Address_2 as AddressLine2
     ,aed.City
     ,aed.State
     ,aed.Zip as ZipCode
     ,aed.Country as CountryCode
     ,eed.BIRTHDATE as MemberDOB
     ,eed.SEX as MemberGender
     ,'' as MemberLanguage
     ,'' as MedicalPlan
     ,'' as MemberIDforMedicalPlan
     ,'' as DentalPlan
     ,'' as GeneralPurpose1
     ,'' as GeneralPurpose3
     ,aed.Telephone as HomeNumber
     ,'' as WorkNumber
     ,eed.EMAIL_ADDRESS as WorkEmailAddress
     ,'' as HomeEmailAddress
     ,'' as LocationCode
     ,'' as DashboardDrillDown
     ,'' as VisionPlan
     ,'' as RxPlan
     ,'' as MedicalTierLevelCoverage


 FROM

 EMPLOYEE_EFF_DATE eed

 INNER JOIN ADDRESS_EFF_DATE aed 
     ON eed.ssn = aed.ssn INNER JOIN COMP_SSN cs
     ON cs.ssn = eed.ssn INNER JOIN COMPANY_DETAIL cd
     ON eed.P_COMPANY_ID_I = cd.COMPANY_ID INNER JOIN COMPANY_EMPLOYMENT_DATA ced
     ON eed.SSN = ced.SSN 

     WHERE eed.P_COMPANY_ID_I = 114562164 
     AND aed.ADDRESS_KEY = 0 
     AND WORKMANS_COMP_EFF_DATE is NULL
     AND ced.STATUS_CODE in ('FTDM','FTREG','PTREG') 
     AND ced.DERIVED_FACTOR_1 in ('NA', 'N/A')
) AS DT
GROUP BY *ALL_FIELDS_IN_DT*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...