2016-04-06 18 views
0

以下のコードは2行目のコメントを除いて動作します。私の結果にはAN_52_ENC_CSN_IDが必要ですが、2つのピボットテーブルを結合すると消えました。私は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 

などを試してください。 2つの異なるテーブル(T2とT3)からのA​​N_52_ENC_CSN_IDという2つの列があり、そのうちの2つのT11の結合から項目を選択します。あなたの行2 T11.AN_52_ENC_CSN_ID、またはT11.AN_52で試してみてください。どちらもうまくいくはずです。

ON T3.AN_52 = T2.AN_52_ENC_CSN_ID 

としてT2、T3の内部結合であなたのON句を変更することを忘れないでください、それが動作するかどうかを教えてください!

+0

素晴らしい!助けてくれてありがとう。 – JoshuaB

関連する問題