2016-11-23 78 views
0

這是我的SQL總和SQL列與在多個ID共同ID

SELECT K.SUBTOTAL_PERHOSP - G.SUBTOTAL_PERHOSP AS SOA 
    ,K.SUBTOTAL_NOTHOSP - G.SUBTOTAL_NOTHOSP AS Disapproved 
    ,G.SUBTOTAL_HB_TOHOSP + H.MEDICARE_INCENTIVES - H.MI_PAYABLES AS HApproved 
    ,D.APPROVED 
    ,k.fldvat_perhosp 
    ,B.CONTROL_CODE 
    ,F.OTHER_REMARKS 
    ,(G.SUBTOTAL_HB_TOHOSP + H.MEDICARE_INCENTIVES - H.MI_PAYABLES) + (
     SELECT sum(D.APPROVED) 
     FROM SYS_IN_PATIENT_MTBL B 
     LEFT JOIN SYS_IP_BILLPROC_PROFFEES_MTBL D ON B.CONTROL_CODE = D.CONTROL_CODE 
     WHERE B.CONTROL_CODE IN ('IP435168', 'IP435171') 
     ) - G.MPI_PERHOSP AS NetPPD 
    ,C.GP 
    ,B.HOSPITAL_CODE 
    ,B.DATE_RCVD 
    ,B.DUE_DATE 
FROM SYS_IN_PATIENT_MTBL B 
INNER JOIN SYS_IP_BILLPROC_COMPUTATION_MTBL K ON B.CONTROL_CODE = K.CONTROL_CODE 
INNER JOIN SYS_IP_BILLPROC_DEDUCTION_MTBL G ON B.CONTROL_CODE = G.CONTROL_CODE 
LEFT JOIN SYS_IP_BILLPROC_REMARKS_MTBL H ON B.CONTROL_CODE = H.CONTROL_CODE 
LEFT JOIN SYS_IP_BILLPROC_PROFFEES_MTBL D ON B.CONTROL_CODE = D.CONTROL_CODE 
LEFT JOIN SYS_DOCTOR_LTBL E ON D.PF_CODE = E.DOCTOR_CODE 
LEFT JOIN SYS_IP_BILLPROC_INFORMATION_MTBL F ON B.CONTROL_CODE = F.CONTROL_CODE 
INNER JOIN SYS_HOSPITALS_LTBL J ON B.HOSPITAL_CODE = J.HOSPITAL_CODE 
INNER JOIN SYS_HOSPITALS_LTBL C ON B.HOSPITAL_CODE = C.HOSPITAL_CODE 
WHERE B.CONTROL_CODE IN ('IP435168', 'IP435171') 

,這是輸出

Output Wrong

注意列NetPPD它輸出錯誤的價值觀 它必須是 4,250.70 4,250.70 17,975.21 17,975.21 我怎麼能做到這一點,因爲如果我使用多個ID它增加了一切該列中,我可以不使用組返回一個值的SQL裏面只有 它必須是

HApproved + Approved(600 + 800) = 4,250.70 (Same Control Code IP435168) 
HApproved + Approved(600 + 1300) = 17,975.21 (Same Control Code IP435171) 

注:這些行不會合並,因爲有一個獨特的列在表格的最右邊,我只是沒有包括在這裏

回答

1

如果我理解正確的,問題是,你是不是增加了通過代碼分裂他們的所有CONTROL_CODE總數。爲了解決移動你的「覈准總」子查詢,以便從部分參加吧的控制代碼。不知道在這家醫院的代碼角色,留下它作爲是不是你的眼前問題,但你可能想將它添加到一起。如果您共享的表定義,我可以做得更好,但低於應該有所幫助:

SELECT K.SUBTOTAL_PERHOSP - G.SUBTOTAL_PERHOSP as SOA 
    , K.SUBTOTAL_NOTHOSP - G.SUBTOTAL_NOTHOSP as Disapproved 
    , G.SUBTOTAL_HB_TOHOSP + H.MEDICARE_INCENTIVES - H.MI_PAYABLES as HApproved 
    , D.APPROVED 
    , k.fldvat_perhosp 
    , B.CONTROL_CODE 
    , F.OTHER_REMARKS 
    ,(G.SUBTOTAL_HB_TOHOSP + H.MEDICARE_INCENTIVES - H.MI_PAYABLES) + APRV.Approved - G.MPI_PERHOSP as NetPPD 
    , C.GP 
    , B.HOSPITAL_CODE 
    , B.DATE_RCVD 
    , B.DUE_DATE 
from SYS_IN_PATIENT_MTBL B 
    INNER JOIN SYS_IP_BILLPROC_COMPUTATION_MTBL K ON B.CONTROL_CODE = K.CONTROL_CODE 
    INNER JOIN SYS_IP_BILLPROC_DEDUCTION_MTBL G ON B.CONTROL_CODE = G.CONTROL_CODE 
    LEFT JOIN SYS_IP_BILLPROC_REMARKS_MTBL H ON B.CONTROL_CODE = H.CONTROL_CODE 
    LEFT JOIN SYS_IP_BILLPROC_PROFFEES_MTBL D ON B.CONTROL_CODE = D.CONTROL_CODE 
    LEFT JOIN SYS_DOCTOR_LTBL E ON D.PF_CODE = E.DOCTOR_CODE 
    LEFT JOIN SYS_IP_BILLPROC_INFORMATION_MTBL F ON B.CONTROL_CODE = F.CONTROL_CODE 
    INNER JOIN SYS_HOSPITALS_LTBL J ON B.HOSPITAL_CODE = J.HOSPITAL_CODE 
    INNER JOIN SYS_HOSPITALS_LTBL C ON B.HOSPITAL_CODE = C.HOSPITAL_CODE 

    LEFT OUTER JOIN 
    (select B.CONTROL_CODE, sum(D.APPROVED) as Approved 
       FROM SYS_IN_PATIENT_MTBL B 
        LEFT JOIN SYS_IP_BILLPROC_PROFFEES_MTBL D ON B.CONTROL_CODE = D.CONTROL_CODE 
       WHERE B.CONTROL_CODE IN ('IP435168','IP435171') 
       GROUP BY B.CONTROL_CODE 
      ) AS APRV ON APRV.CONTROL_CODE = B.CONTROL_CODE 

where B.CONTROL_CODE IN ('IP435168','IP435171') 
+0

謝謝,我會嘗試這個 –

+0

由於這一個工程 –

+0

太好了!請接受答案(點擊查看旁邊標記)。 – under