2016-04-06 5 views
0

Code unten funktioniert mit Ausnahme des Kommentars in Zeile 2. Ich brauche AN_52_ENC_CSN_ID in meinen Ergebnissen, aber es verschwand, als ich die beiden Pivot-Tabellen beigetreten. Ich habe versucht, es in T11, T1, T2 und mit der Änderung seines qualifizierten Namens zu referenzieren. Ich stelle mir vor, dass es etwas Leichtes gibt, das ich vermisst habe, aber ich habe stundenlang daran gearbeitet.Finden Sie meine fehlende Spalte in verbundenen Pivot-Tabellen

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) 

Antwort

0

Ich schätze das Problem ist, dass der Name für SQL mehrdeutig ist. Versuchen Sie in T3:

select AN_52_ENC_CSN_ID AS AN_52, 
EVENT_TIME, 
EVENT_TYPE 
FROM TABLE_PATIENT2 
PIVOT 

usw. nach dem Pivot. Sie haben zwei Spalten namens AN_52_ENC_CSN_ID aus zwei verschiedenen Tabellen (T2 und T3) und Sie wählen Dinge aus der Verknüpfung der beiden von ihnen T11. Versuchen Sie dann in Ihrer Linie 2 T11.AN_52_ENC_CSN_ID oder T11.AN_52, beide sollten funktionieren. Denken Sie daran, Ihre ON Klausel in der inneren ändern verbinden von T2 und T3 als

ON T3.AN_52 = T2.AN_52_ENC_CSN_ID 

Sag mir, wenn es funktioniert!

+0

Großartig! Danke nochmal für die Hilfe. – JoshuaB

Verwandte Themen