SELECT T1.Group_Num "Site_Number"
,T1.Site_Name "Site_Name"
,T1.dtMonth "Month"
,T1.Gross_Charges "Gross_Charges"
,T1.Billed_Visits "Billed_Visits"
,T1.Gross_Payments "Cash_Receipts"
,T1.Contractual_Allowances "Contractual_Allowances"
,T1.Self_Pay_Bad_Debt_Transfers "Self_Pay_Bad_Debt_Transfers"
,T1.Third_Party_Denial_Write_offs "Third_Party_Denial_Write_offs"
-- ,T1.Gross_Adjustments "Gross_Adjustments"
,SUM(T1.Gross_Payments) OVER (PARTITION BY T1.Group_Num,T1.Site_Name ORDER BY T1.Group_Num,T1.dtMonth ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) "Sum_Payments_Last_3_Months"
,SUM(T1.Monthly_Balance) OVER (PARTITION BY T1.Group_Num,T1.Site_Name ORDER BY T1.Group_Num,T1.dtMonth) "Active_AR_Balance"
,T1.Monthly_Balance "Monthly_Balance"
--,T1.Active_AR_Balance "Active_AR_Balance"
,add_months(trunc(sysdate,'MONTH'),-12) "First_Month"
--,to_date(to_char(add_months(sysdate,-4),'YYYY') || '0401', 'yyyymmdd') "First_Month"
,(add_months(T1.dtMonth, 1)-1) - add_months(T1.dtMonth, -2) "NumDays_Last3months"
FROM
(SELECT
C.CPCODE Group_Num, L.LOCNAME Site_Name
,trunc(C.POSTDATE,'MONTH') dtMonth
,SUM(CASE WHEN (C.TYPE='C') THEN C.AMOUNT ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Gross_Charges
,SUM(CASE WHEN (C.TYPE='P') THEN C.AMOUNT ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Gross_Payments
--,SUM(CASE WHEN (C.TYPE='A') THEN C.AMOUNT ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Gross_Adjustments
,SUM(C.AMOUNT) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Monthly_Balance
,COUNT (DISTINCT (CASE WHEN ((C.TYPE='C') AND (C.PRCODE IN ('99281','99282','99283','99284','99285','99291'))) THEN C.CPCODE || C.ACCOUNT END)) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Billed_Visits
,SUM(CASE WHEN ((C.TYPE='P') AND (C.ALLOWED IS NOT NULL)) THEN C.ALLOWED ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Contractual_Allowances
,SUM(CASE WHEN ((C.TYPE='A') AND (C.PRCODE='75')) THEN C.AMOUNT ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Self_Pay_Bad_Debt_Transfers
,SUM(CASE WHEN ((C.TYPE='A') AND (C.PRCODE IN ('42','43','43Q','44','44A','44B','44C','44D','44E','44F','44G','44H','44I','44J','44K','44L','44M','44N','44O','44P','44Q','44R','44S','44T','44U','44V','44W','44X','44Y','44Z'))) THEN C.AMOUNT ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Third_Party_Denial_Write_offs
,row_number() OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH') order by C.rowid) rn
FROM
(SELECT CPCODE, ACCOUNT, DOCLOC, TYPE, PRCODE, AMOUNT, SPLITFLAG, ALLOWED
, CASE WHEN (BATCHNBR='888888') THEN to_date(POSTDATE,'j') ELSE NVL(to_date(ORIGPOSTDATE,'j'),to_date(POSTDATE,'j'))END POSTDATE
FROM MEDCHARGES
WHERE (CPCODE IN ('1','2','3'))) C
LEFT JOIN MEDLOCATIONS L ON ((C.CPCODE = L.LOCCPCODE) AND (L.LOCCODE=C.DOCLOC))
WHERE
(C.CPCODE IN ('1','2','3'))
AND (C.POSTDATE IS NOT NULL)
AND (C.POSTDATE <= trunc(sysdate,'MONTH')-1)
) T1 WHERE (T1.rn=1)
/*------------------------------*/
UNION ALL
/*------------------------------*/
SELECT
'ALL' "Site_Number",'Consolidated' "Site_Name", T2.dtMonth "Month"
, SUM(T2.Gross_Charges) "Gross_Charges"
, SUM(T2.Billed_Visits) "Billed_Visits"
, SUM(T2.Cash_Receipts) "Cash_Receipts"
, SUM(T2.Contractual_Allowances) "Contractual_Allowances"
, SUM(T2.Self_Pay_Bad_Debt_Transfers) "Self_Pay_Bad_Debt_Transfers"
, SUM(T2.Third_Party_Denial_Write_offs) "Third_Party_Denial_Write_offs"
, SUM(T2.Sum_Payments_Last_3_Months) "Sum_Payments_Last_3_Months"
, SUM(T2.Active_AR_Balance) "Active_AR_Balance"
, SUM(T2.Monthly_Balance) "Monthly_Balance"
, MIN (T2.NumDays_Last3months) "NumDays_Last3months"
, MIN (T2.First_Month) "First_Month"
FROM
(SELECT
T1.Group_Num Site_Number, T1.Site_Name Site_Name,T1.dtMonth
,T1.Gross_Charges Gross_Charges,T1.Billed_Visits Billed_Visits, T1.Gross_Payments Cash_Receipts
,T1.Contractual_Allowances Contractual_Allowances
,T1.Self_Pay_Bad_Debt_Transfers Self_Pay_Bad_Debt_Transfers
,T1.Third_Party_Denial_Write_offs Third_Party_Denial_Write_offs
-- ,T1.Gross_Adjustments Gross_Adjustments
,SUM(T1.Gross_Payments) OVER (PARTITION BY T1.Group_Num,T1.Site_Name ORDER BY T1.Group_Num,T1.dtMonth ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) Sum_Payments_Last_3_Months
,SUM(T1.Monthly_Balance) OVER (PARTITION BY T1.Group_Num,T1.Site_Name ORDER BY T1.Group_Num,T1.dtMonth) Active_AR_Balance
,T1.Monthly_Balance Monthly_Balance
--,T1.Active_AR_Balance Active_AR_Balance
,add_months(trunc(sysdate,'MONTH'),-12) First_Month
--,to_date(to_char(add_months(sysdate,-4),'YYYY') || '0401', 'yyyymmdd') First_Month
,(add_months(T1.dtMonth, 1)-1) - add_months(T1.dtMonth, -2) NumDays_Last3months
FROM
(SELECT
C.CPCODE Group_Num
, L.LOCNAME Site_Name
,trunc(C.POSTDATE,'MONTH') dtMonth
,SUM(CASE WHEN (C.TYPE='C') THEN C.AMOUNT ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Gross_Charges
,SUM(CASE WHEN (C.TYPE='P') THEN C.AMOUNT ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Gross_Payments
--,SUM(CASE WHEN (C.TYPE='A') THEN C.AMOUNT ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Gross_Adjustments
,SUM(C.AMOUNT) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Monthly_Balance
,COUNT (DISTINCT (CASE WHEN ((C.TYPE='C') AND (C.PRCODE IN ('99281','99282','99283','99284','99285','99291'))) THEN C.CPCODE || C.ACCOUNT END)) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Billed_Visits
,SUM(CASE WHEN ((C.TYPE='P') AND (C.ALLOWED IS NOT NULL)) THEN C.ALLOWED ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Contractual_Allowances
,SUM(CASE WHEN ((C.TYPE='A') AND (C.PRCODE='75')) THEN C.AMOUNT ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Self_Pay_Bad_Debt_Transfers
,SUM(CASE WHEN ((C.TYPE='A') AND (C.PRCODE IN ('42','43'))) THEN C.AMOUNT ELSE 0 END) OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH')) Third_Party_Denial_Write_offs
,row_number() OVER (partition by C.CPCODE,L.LOCNAME,trunc(C.POSTDATE,'MONTH') order by C.rowid) rn
FROM
(SELECT CPCODE, ACCOUNT, DOCLOC, TYPE, PRCODE, AMOUNT, SPLITFLAG, ALLOWED
, CASE WHEN (BATCHNBR='888888') THEN to_date(POSTDATE,'j') ELSE NVL(to_date(ORIGPOSTDATE,'j'),to_date(POSTDATE,'j'))END POSTDATE
FROM MEDCHARGES WHERE (CPCODE IN ('1','2','3'))) C
LEFT JOIN MEDLOCATIONS L ON ((C.CPCODE = L.LOCCPCODE) AND (L.LOCCODE=C.DOCLOC))
WHERE
(C.CPCODE IN ('1','2','3'))
AND (C.POSTDATE IS NOT NULL)
AND (C.POSTDATE <= trunc(sysdate,'MONTH')-1)
) T1
WHERE (T1.rn=1)) T2 GROUP BY T2.dtMonth ORDER BY T2.dtMonth
--AND (C.SPLITFLAG IS NULL)
--AND (C.POSTDATE <= to_Number(to_char((trunc(sysdate,'MONTH')-1),'J')))
--AND (C.POSTDATE between to_Number(to_char(add_months(trunc(sysdate,'MONTH'),-12),'J')) and to_Number(to_char((trunc(sysdate,'MONTH')-1),'J')))