基本的に私がやろうとしているのは、予測期間中のCreditPaymentsの平均パーセンテージとCashPaymentsの平均パーセンテージを計算することです(3か月を振り返ってから、過去6か月の正しいタイプのすべての支払いを合計します)
したがって、平均 (正しいルックバック期間中) が = クレジット 75% & 現金 25% である場合、その月の未払いの A/R に対して、クレジットが何%、現金が何% になるかを予測できます。MOS ごとにルックバックを変更しながら、12 か月間実行したいと考えています。
現在、私の結果は常に 0 です。これは明らかに間違っています。最初の内部クエリが正しいことはわかっています。ただし、外側のクエリを実行すると問題が発生します。問題はT1にあると思います。MOS、結果を制限していると思います。どんな助けでも大歓迎です。
SELECT
T1.Facility Facility
, T1.CustType CustType
, T1.MOS MOS
, SUM(CASE WHEN (T1.MOS BETWEEN ADD_MONTHS(T1.MOS,-9) AND (ADD_MONTHS(T1.MOS,-3)-1) THEN T1.CredPmts ELSE 0 END)/SUM(CASE WHEN (T1.MOS BETWEEN ADD_MONTHS(T1.MOS,-9) AND (ADD_MONTHS(T1.MOS,-3)-1) THEN T1.Charges ELSE 0 END)
, SUM(CASE WHEN (T1.MOS BETWEEN ADD_MONTHS(T1.MOS,-9) AND (ADD_MONTHS(T1.MOS,-3)-1) THEN T1.CashPmts ELSE 0 END)/SUM(CASE WHEN (T1.MOS BETWEEN ADD_MONTHS(T1.MOS,-9) AND (ADD_MONTHS(T1.MOS,-3)-1) THEN T1.Charges ELSE 0 END)
FROM
(
SELECT
T.FACILITY Facility
, T.CUSTTYPE CustType
, trunc(to_date(T.SERVICEDATE,'j'),'MONTH') MOS
, SUM(CASE WHEN T.TYPE = 'C' THEN T.AMOUNT ELSE 0 END) Charges
, SUM(CASE WHEN (T.TYPE IN ('P1','62','12','75','P6','23') THEN T.AMOUNT ELSE 0 END CredPmts
, SUM(CASE WHEN (T.TYPE IN ('92','57','P3','P9','26','39') THEN T.AMOUNT ELSE 0 END CashPmts
FROM TRANSTABLE T
WHERE
T.FACILITY = '123'
AND T.SERVICEDATE BETWEEN to_char(ADD_MONTHS(to_date('20120101', 'yyyymmdd'),-9), 'j') AND to_char(to_date('20121231', 'yyyymmdd'), 'j')
GROUP BY
T.FACILITY
, T.CUSTTYPE
, trunc(to_date(T.SERVICEDATE,'j'),'MONTH')
)T1
GROUP BY
T1.Facility
, T1.CustType
, T1.MOS