У меня есть база данных, которую я перенял у коллеги, которая давно не работает в моей организации.Один из запросов доставляет мне массу неприятностей.Это запрос на создание таблицы, который включает в себя три объединения (см. Код ниже).
Моя идея заключается в том, что было бы проще использовать упрощенный запрос make table с пустыми категориями, а затем использовать 2 или 3 запроса на обновление, чтобы заполнить данные по сравнению с попытками сделать все это одним махом.
Этот один гигантский запрос сложно проанализировать, когда возникают проблемы с данными, когда я мог бы просто выполнить три запроса на обновление.Моя проблема в том, что у меня возникли проблемы с разбором запроса к таблице ниже.
Если бы я мог просто понять, с чего начинать основание стола, тогда было бы легко все расставить по местам.Если бы кто-то мог предложить лучший способ создать таблицу, не добавляя сложные объединения, это было бы идеально.Заранее спасибо!
SELECT DISTINCT '' AS [Transaction for the record]
,[Current Employee Census] ! [SSN] AS [Subscriber's Social Security Number]
,[Current Employee Census] ! [FIRST_NAME] AS [Member's First Name]
,[Current Basic Work] ! [MIDDLE_NAME] AS [Member's Middle Initial]
,[Current Employee Census] ! [LAST_NAME] AS [Member's Last name]
,[Current Basic Work] ! [ADDRESS_LN1] AS [Member's Address 1]
,[Current Basic Work] ! [ADDRESS_LN2] AS [Member's Address 2]
,[Current Basic Work] ! [CITY_NM] AS [Member's City]
,[Current Basic Work] ! [STATE_CD] AS [Member's State or Province]
,Format([Current Basic Work] ! [ZIP_CD], "00000") AS [Member's Postal Code]
,Format([Current Employee Census].DATE_OF_BIRTH, "yyyy-mm-dd") AS [Member's Date of Birth]
,"00" AS [Member's Relationship to the Subscriber]
,[Current Basic Work].SSN AS [Member's Social Security Number]
,[Current Basic Work].PHONE AS [Member's Daytime Phone Number]
,[Current HRIS report].[Home Phone] AS [Member's Evening Phone Number]
,[Current HRIS report].[Cell Phone] AS [Member's Cell Phone Number]
,Format([Current MED BDR].EFFECTIVE_DATE, "yyyy-mm-dd") AS [Member's Effective Date of Coverage]
,[Current MED BDR].END_DATE AS [Member's Coverage Expiration Date]
,[Current Basic Work].WORK_EMAIL AS [Member's Email Address]
,'' AS [Member's Marital Status]
,[Current Employee Census].GENDER AS [Member's Gender]
,Format([Current Employee Census].EMPLOYER_ID, "000000000") AS [Subscriber's Unique Identifier]
,IIf([Current MED BDR].[PERSON_TYPE] = "Retired", "R", "A") AS [Subscriber's Status]
,[Current MED BDR].SSN
,'' AS Filler
,IIf([Current MED BDR].[CARRIER_NAME] = "Company1", "COMPANY1", IIf([Current MED BDR].[CARRIER_NAME] = "Company2", "COMPANY2", IIf([Current MED BDR].[CARRIER_NAME] = "Company3", "COMPANY4", "OPTOUT"))) AS [Carrier Name]
,IIf([Current MED BDR].[COVERAGE_NAME] = "Self Only", "EMP", IIf([Current MED BDR].[COVERAGE_NAME] = "Family", "FAM", IIf([Current MED BDR].[COVERAGE_NAME] = "Self + Child(ren)", "ECH", IIf([Current MED BDR].[COVERAGE_NAME] = "Self + Spouse", "ESP", [Current MED BDR].[COVERAGE_NAME])))) AS Coverage
,'' AS [Client Attribute 3]
,'' AS [Client Attribute 4]
,'' AS [Client Attribute 5]
,'' AS Filler2
,[Current MED BDR].PERSON_TYPE
INTO [Employee Records]
FROM (
(
[Current Employee Census] RIGHT JOIN [Current Basic Work] ON [Current Employee Census].SSN = [Current Basic Work].SSN
) LEFT JOIN [Current MED BDR] ON [Current Basic Work].SSN = [Current MED BDR].SSN
)
LEFT JOIN [Current HRIS report] ON [Current Basic Work].SSN = [Current HRIS report].SSN
WHERE (((IIf([Current MED BDR].[CARRIER_NAME] = "Company1", "COMPANY1", IIf([Current MED BDR].[CARRIER_NAME] = "Company2", "COMPANY2", IIf([Current MED BDR].[CARRIER_NAME] = "Company3", "COMPANY4", "OPTOUT")))) <> "COMPANY4"));