Мне нужно упростить MS Access SQL Query, чтобы понять, почему я получаю несоответствия данных в своих отчетах - PullRequest
0 голосов
/ 03 мая 2019

У меня есть база данных, которую я перенял у коллеги, которая давно не работает в моей организации.Один из запросов доставляет мне массу неприятностей.Это запрос на создание таблицы, который включает в себя три объединения (см. Код ниже).

Моя идея заключается в том, что было бы проще использовать упрощенный запрос 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"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...