2014-10-22 2 views
-2

다음 쿼리가 작성되었습니다. 내 문제는 policy_exp_date에서 오늘 날짜를 지난 날짜를 얻으면 insplans 또는 clientplans와 관련된 모든 것을 제외하고 모든 것을 반환해야 함 그렇지 않으면 지정됩니다.DATE를 기준으로 한 SQL 결과에서 데이터 제외

은 요약하면 : Policy_Exp_DATE가> 오늘은 다음 insplans을 * 다른 당겨 제외하면 * 또는 clientplans * 작업과 같은

select clients.CLIENT_ID_1 as SourceMRN, 
'' AS HMOMEMBER, 
'' as IDXMRN, 
replace (clients.CLIENT_ID_2,'-','') as PatientSSN, 
clients.LAST_NAME as LASTNAME, 
clients.FIRST_NAME as FIRSTNAME, 
clients.MIDDLE_NAME as MIDDLENAME, 
'' as PTMothersMaiden, 
convert (varchar,clients.BIRTH_DATE,112) as DOB, 
clients.sex as GENDER, 
'' as PTNICKNAME, 
'' as RACE, 
clients.ADDRESS_1, 
clients.ADDRESS_2, 
clients.CITY, 
clients.STATE, 
clients.ZIP_CODE, 
'' as FLD18, 
'' as FLD19, 
clients.PHONE_1 as PTHOMEPHONE, 
'' as PTCELL, 
'' as PTEMAIL, 
'' as PTDAYPHONE, 
(case WHEN [CLIENTS].LANGUAGE_ID LIKE '0' THEN 'ENGLISH' 
when [clients].LANGUAGE_ID like '1' then 'SPANISH' END) as LANGUAGE, 
'' as MaritalStatus, 
'' as Religion, 
'' as Ethnicity, 
'' as PtExpDate, 
'' as PtExpIndex, 
'' as LASTUPDATEDATE, 
convert (varchar,clientlog.FNDATE,112) as LASTUPDATEDATE, 
'' as PCPNAME, 
'' as VIP, 
'' as FLD33, 
'' as PREFCONTACT, 
'' as FLD35, 
'' as GUARANTORNAME, 
'' AS GUARADDRESS1, 
'' AS GUARADDRESS2, 
'' AS GUARCITY, 
'' AS GUARSTATE, 
'' AS GUARZIP, 
'' AS GUARHOMEPHONE, 
'' AS GUARWORKPHONE, 
'' AS GUARRELATIONSHIP, 
'' as GUARSSN, 
'' as GUAREMPNAME, 
'' as FLD47, 
'' AS GUAREMPADDRESS1, 
'' as GUAREMPADDRESS2, 
'' as GUAREMPCITY, 
'' AS GUAREMPSTATE, 
'' AS GUAREMPZIP, 
'' AS GUAREMPPHONE, 
'' AS GUAREMPSTATUS, 
'' AS FLD55, 
'' AS FLD56, 
'' AS FLD57, 
'' AS FLD58, 
'' AS FLD59, 
'' AS FLD60, 
'' AS FLD61, 
'' AS FLD62, 
'' AS FLD63, 
'' AS FLD64, 
'' AS FLD65, 
insplans.DESCRIPTION_UPPER AS FINANCIAL_CLASS, 
'' as PAYERID#, 
insplans.DESCRIPTION_UPPER as PAYERNAME, 
'' as PAYERADDRESS2, 
'' AS PAYERCITY, 
'' AS PAYERSTATE, 
'' AS PAYERZIP, 
'' AS PAYERCONTACTNBR, 
clientplans.GROUP_NO AS GROUPNUMBER, 
convert (varchar,clientplans.START_DATE,112) as POLICY_EFF_DATE, 
convert (varchar,clientplans.END_DATE,112) as POLICY_EXP_DATE, 
clientplans.SEQUENCE_NUM, 
(clients.LAST_NAME +'^' + clients.FIRST_NAME)as INSURED_NAME, 
'' as INSURED_DOB, 
'' AS INSURED_ADD1, 
'' AS INSURED_ADD2, 
'' AS INSURED_CITY, 
'' AS INSURED_STATE, 
'' AS INSURED_ZIP, 
'' AS INSURED_PLAN_NBR, 
clientplans.POLICY_NO AS POLICY_NBR, 
'' AS INSURED_GENDER, 
'' AS INSURED_HOMEPHONE, 
'' AS INSURED_EMP_NAME, 
'' AS INSURED_RELATION, 
'' AS ACCIDENT_DATE, 
'' AS ACCIDENT_CODE, 
'' AS ACCIDENT_STATE, 
'' AS FLD94, 
'' AS CLINICAL_REMINDER, 
'' AS APPT_REMINDER, 
'' AS INS_INST, 
'' AS SET_ID, 
'' AS COPAY, 
'CC' AS SOURCE_PREFIX 
FROM project.dbo.CLIENTS 
join CLIENTPLANS 
    on clients.RECORD_ID = clientplans.CLIENT_ID 
join INSPLANS 
    on insplans.RECORD_ID = clientplans.PLAN_ID 
join (SELECT MAX(fndate) FNDATE,client_id 
from CLIENTLOG 
group by CLIENT_ID)CLIENTLOG 
on clientlog.CLIENT_ID = clients.RECORD_ID 
where clients.RECORD_ID = clientplans.CLIENT_ID 
+1

MySQL 또는 SQL Server를 사용하고 있습니까? 그들은 같은 것이 아닙니다. –

+0

왜 모든 빈 문자열이 필요합니까? –

+0

이 결과가 궁극적으로 사용될 파일에 대한 인터페이스 요구 사항이 있으므로 빈 문자열이 필요합니다. –

답변

0

겠습니까 뭔가를..?

FROM project.dbo.CLIENTS 
join (SELECT MAX(fndate) FNDATE,client_id 
     from CLIENTLOG 
     group by CLIENT_ID)CLIENTLOG 
    on clientlog.CLIENT_ID = clients.RECORD_ID 
Left Outer join CLIENTPLANS 
    on clients.RECORD_ID = clientplans.CLIENT_ID 
     And clientplans.END_DATE > GetDate() 
Left Outer join INSPLANS 
    on clientplans.PLAN_ID = insplans.RECORD_ID 

또한 where 절을 제거해야합니다. 그렇지 않으면 많은 레코드가 제거됩니다.

관련 문제