I have a query like belowselect qms.personal_ref_id,qms.qms_hgb, lr.time_hgb, lr.dt from( select * from openquery ( oracle_ra, ' SELECT pp.personal_ref_id,lr.lab_result_date,lr.lab_result_reading * lr.lab_item_num as qms_hgb FROM ra.LAB_RESULT LR, ra.PATIENT_PERSONAL PP, ra.UNIT WHERE PP.personal_num = LR.personal_num AND unit.unit_num = LR.unit_num AND LR.LAB_RESULT_DATE BETWEEN ''01-sep-2006'' and ''30-sep-2006'' AND ( LR.LAB_ITEM_NUM = 3 ) -- 1=hct 3=hgb AND personal_ref_id = ''276340'' ' ))qms left join ( SELECT lr.chart_number, LR.LAB_DATE as DT, MAX(case when LR.TEST_CODE in ('HGB', 'HEMOGLOBIN') then num_result *3 end) as time_HGB FROM labrec_view LR LEFT JOIN ODS_PATIENT P ON LR.CHART_NUMBER = P.PATIENT_ID AND LR.PATIENT_NO = P.PATIENT_NO WHERE LR.LAB_DATE BETWEEN '9/1/06' AND '9/30/06' AND LR.TEST_CODE IN('HGB', 'HEMOGLOBIN') and lr.chart_number = '276340' GROUP BY lr.chart_number, LR.LAB_DATE )lr on qms.personal_ref_id = lr.chart_number AND QMS.qms_hgb = lr.time_HGB
Open query return : qms276340 2006-09-01 00:00:00.000 35.4276340 2006-09-02 00:00:00.000 35.4276340 2006-09-04 00:00:00.000 35.4276340 2006-09-06 00:00:00.000 35.4276340 2006-09-08 00:00:00.000 35.4276340 2006-09-11 00:00:00.000 35.4276340 2006-09-13 00:00:00.000 35.4276340 2006-09-15 00:00:00.000 35.4276340 2006-09-18 00:00:00.000 35.4276340 2006-09-20 00:00:00.000 35.4276340 2006-09-22 00:00:00.000 35.4276340 2006-09-25 00:00:00.000 35.4
and another sub query return lr276340 2006-09-01 00:00:00.000 32.40276340 2006-09-06 00:00:00.000 32.10276340 2006-09-11 00:00:00.000 32.10276340 2006-09-18 00:00:00.000 35.40276340 2006-09-25 00:00:00.000 40.50
If I left join QMS to lr based on qms.personal_ref_id = lr.chart_number AND QMS.qms_hgb = lr.time_HGB , I get 276340 2006-09-01 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-02 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-04 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-06 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-08 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-11 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-13 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-15 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-18 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-20 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-22 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-25 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000
i am not sure Why I get the above result even though I am doing a left join .. I need to get the result look like...How can I do this?276340 2006-09-01 00:00:00.000 35.4 null null276340 2006-09-02 00:00:00.000 35.4 null null276340 2006-09-04 00:00:00.000 35.4 null null276340 2006-09-06 00:00:00.000 35.4 null null276340 2006-09-08 00:00:00.000 35.4 null null276340 2006-09-11 00:00:00.000 35.4 null null276340 2006-09-13 00:00:00.000 35.4 null null276340 2006-09-15 00:00:00.000 35.4 null null276340 2006-09-18 00:00:00.000 35.4 35.40 2006-09-18 00:00:00.000276340 2006-09-20 00:00:00.000 35.4 null null276340 2006-09-22 00:00:00.000 35.4 null null276340 2006-09-25 00:00:00.000 35.4 null null