2016-04-06 1 views
0

Код ниже работает, за исключением комментария в строке 2. Мне нужно иметь AN_52_ENC_CSN_ID в моих результатах, но он исчез, когда я присоединился к двум сводным таблицам. Я попытался ссылаться на него в T11, T1, T2 и с изменением его квалифицированного имени. Я думаю, что есть что-то легкое, что я пропустил, но я работал над ним часами.Найти мой недостающий столбец в объединенных сводных таблицах

select 
    -- t11.AN_52_ENC_CSN_ID, 
    DC_FLOOR, 
    DC_HOME, 
    IN_PACU, 
    IN_OR, 
    PreOP_Complete, 
    IN_PreOP, 
    Out_Of_OR, 
    Surgery_Stop, 
    Surgery_Start, 
    Case_CX_POHA , 
    CASE 
    WHEN Case_CX_POHA IS NOT NULL 
    THEN 'YES' 
    ELSE 'NO' 
    END AS CX_POHA, 
    CASE 
    WHEN Case_CX_INTRAOP IS NOT NULL 
    THEN 'YES' 
    ELSE 'NO' 
    END AS CX_INTRAOP, 
    CASE 
    WHEN DC_HOME IS NOT NULL 
    THEN 'Outpatient' 
    ELSE 'Inpatient' 
    END AS "IP/OP", 
    Induction_Time, 
    Ready_Case, 
    LMA_Inserted, 
    LMA_Removed, 
    Anesthesia_Start, 
    Anesthesia_Stop, 
    Intubation, 
    Extubation, 
    Emergence_Start, 
    GREATEST(ROUND(((INDUCTION_TIME) - (IN_OR)) * 24 * 60), 0)    AS Induction_Promptness, 
    GREATEST(ROUND(((READY_CASE) -  (IN_OR)) * 24 * 60), 0)     AS OR_to_Ready_for_Surgery, 
    GREATEST(ROUND(((SURGERY_START) -  (READY_CASE)) * 24 * 60), 0)   AS Ready_to_Surgery_Start, 
    GREATEST(ROUND(((SURGERY_STOP) -  (SURGERY_START)) * 24 * 60), 0)  AS Surgery_Duration, 
    GREATEST(ROUND(((OUT_OF_OR) -  (SURGERY_STOP)) * 24 * 60), 0)   AS Surgery_Stop_to_Out_OR, 
    GREATEST(ROUND(((OUT_OF_OR) -  (Emergence_START)) * 24 * 60), 0)    AS Emergence_to_Out_of_OR, 

    ROUND(COALESCE(((LMA_REMOVED - EMERGENCE_START) * 24 * 60), ((EXTUBATION - EMERGENCE_START) * 24 * 60)))  AS Emerg_to_extub, 
    ROUND(greatest(COALESCE(((DC_FLOOR - IN_PACU) * 24 * 60), ((DC_HOME - IN_PACU) * 24 * 60)), COALESCE(((DC_HOME - IN_PACU) * 24 * 60), ((DC_FLOOR - IN_PACU) * 24 * 60)))) AS PACU_Time 







from 

(


WITH TABLE_PATIENT AS 
( 
SELECT 
CLARITY.OR_LOG_CASE_TIMES.TRACKING_TIME_IN, 
CLARITY.F_AN_RECORD_SUMMARY.AN_52_ENC_CSN_ID, 
CLARITY.OR_LOG_CASE_TIMES.TRACKING_EVENT_C 

FROM 
CLARITY.F_AN_RECORD_SUMMARY 
INNER JOIN CLARITY.OR_LOG 
ON CLARITY.F_AN_RECORD_SUMMARY.LOG_ID = CLARITY.OR_LOG.LOG_ID 
INNER JOIN CLARITY.OR_LOG_CASE_TIMES 
ON CLARITY.OR_LOG.LOG_ID = CLARITY.OR_LOG_CASE_TIMES.LOG_ID 
INNER JOIN CLARITY.ZC_OR_PAT_EVENTS 
ON CLARITY.OR_LOG_CASE_TIMES.TRACKING_EVENT_C = CLARITY.ZC_OR_PAT_EVENTS.TRACKING_EVENT_C 
WHERE CLARITY.OR_LOG.LOC_ID IN (4060020, 4060021) 

group by F_AN_RECORD_SUMMARY.AN_52_ENC_CSN_ID, 
CLARITY.OR_LOG_CASE_TIMES.TRACKING_TIME_IN, 
CLARITY.OR_LOG_CASE_TIMES.TRACKING_EVENT_C 
) 

SELECT 
* 
FROM TABLE_PATIENT 
PIVOT 
(
    min(TRACKING_TIME_IN) 
    for TRACKING_EVENT_C IN (310 as DC_FLOOR, 340 as DC_HOME ,380 AS IN_PACU, 120 as IN_OR, 100 as PreOP_Complete, 60 as IN_PreOP, 160 as Out_Of_OR, 150 as Surgery_Stop, 130 as Surgery_Start) 


)T2 


-- END TRACKING TIMES 








-- BEGIN EVENT TIMES 

inner Join 
(

WITH TABLE_PATIENT2 AS 
( 
SELECT 
CLARITY.ED_IEV_EVENT_INFO.EVENT_TIME, 
CLARITY.F_AN_RECORD_SUMMARY.AN_52_ENC_CSN_ID, 
CLARITY.ED_IEV_EVENT_INFO.EVENT_TYPE 

FROM CLARITY.OR_LOG 
    INNER JOIN CLARITY.F_AN_RECORD_SUMMARY 
    ON CLARITY.OR_LOG.LOG_ID = CLARITY.F_AN_RECORD_SUMMARY.LOG_ID 
    INNER JOIN CLARITY.V_LOG_BASED 
    ON CLARITY.OR_LOG.LOG_ID = CLARITY.V_LOG_BASED.LOG_ID 
    INNER JOIN CLARITY.PATIENT 
    ON CLARITY.F_AN_RECORD_SUMMARY.AN_PAT_ID = CLARITY.PATIENT.PAT_ID 
    INNER JOIN CLARITY.ED_IEV_PAT_INFO 
    ON CLARITY.F_AN_RECORD_SUMMARY.AN_52_ENC_CSN_ID = CLARITY.ED_IEV_PAT_INFO.PAT_CSN 
    INNER JOIN CLARITY.ED_IEV_EVENT_INFO 
    ON CLARITY.ED_IEV_PAT_INFO.EVENT_ID  = CLARITY.ED_IEV_EVENT_INFO.EVENT_ID 
    WHERE CLARITY.OR_LOG.LOC_ID    IN (4060020, 4060021) 
    AND (CLARITY.ED_IEV_EVENT_INFO.EVENT_STATUS_C is null or CLARITY.ED_IEV_EVENT_INFO.EVENT_STATUS_C = 1) 

group by F_AN_RECORD_SUMMARY.AN_52_ENC_CSN_ID, 
CLARITY.ED_IEV_EVENT_INFO.EVENT_TIME, 
CLARITY.ED_IEV_EVENT_INFO.EVENT_TYPE 
) 

SELECT * 

FROM TABLE_PATIENT2 
PIVOT 
(
    min(EVENT_TIME) 
    for EVENT_TYPE IN (1170082 AS Case_CX_POHA, 1170083 as Case_CX_IntraOp, 1170007 as Induction_Time, 1170009 as Ready_Case, 117100180 as LMA_Inserted, 117100179 as LMA_Removed, 1170001 as Anesthesia_Start, 1170002 as Anesthesia_Stop, 1170102 as Intubation, 1170112 as Extubation, 1170113 as Emergence_Start) 
) 
)T3 
On T3.AN_52_ENC_CSN_ID = T2.AN_52_ENC_CSN_ID 


)t11 

where t11.Case_CX_POHA is not null or (((ANESTHESIA_STOP - ANESTHESIA_START) *60 *24) > 0) 

ответ

0

Я думаю, проблема в том, что это имя неоднозначно для SQL. В T3, попробуйте:

select AN_52_ENC_CSN_ID AS AN_52, 
EVENT_TIME, 
EVENT_TYPE 
FROM TABLE_PATIENT2 
PIVOT 

etc после стержня. у вас есть два колона с именем AN_52_ENC_CSN_ID из двух разных таблиц (T2 и T3), и вы выбираете вещи из объединения двух из них T11. Попробуйте в вашей строке 2 T11.AN_52_ENC_CSN_ID, или T11.AN_52, оба должны работать. Не забудьте изменить положение ON во внутреннем джойн t2 и t3, как

ON T3.AN_52 = T2.AN_52_ENC_CSN_ID 

Скажите мне, если это работает!

+0

Отлично! Спасибо еще раз за помощь. – JoshuaB

Смежные вопросы