У меня есть сводная таблица за 1 - 12 месяцев, основанная на фюре, фонде, glkey, globject У меня проблема с суммированием месяцев до заданного номера месяца для этой строки. Я могу добавить выражение Case
, чтобы добавить как
WHEN 2 then m01 + m02
WHEN 12 then m01 + m02 .. m12
Кто-нибудь знает об al oop или лучшем способе сделать это?
Функция, которую я создал, передавая ей 4 для значения месяца, должна быть 2537.50, но я получаю 15741.09.
CREATE OR REPLACE FUNCTION gla_sum_asof_month (
fyr IN NUMBER , fund IN NUMBER , au IN CHAR
, acct IN NUMBER , sacct IN NUMBER , mnth IN NUMBER )
RETURN NUMBER
IS
rtn_amt NUMBER(18,2) := 0;
amt NUMBER(18,2) := 0;
BEGIN
SELECT SUM(amt) INTO rtn_amt FROM (
SELECT *
FROM app_reports.vw_glamounts
UNPIVOT
(
amt FOR fmonth
IN (m01 AS 1, m02 AS 2, m03 AS 3, m04 AS 4 , m05 AS 5 , m06 AS 6,
m07 AS 7, m08 AS 8 , m09 AS 9, m10 AS 10, m11 AS 11, m12 AS 12)
)
) a
WHERE a.Fiscal_Year = fyr
AND a.company = fund
AND a.acct_unit = au
AND a.account = acct
AND a. sub_account = sacct
AND a.fmonth <= mnth; -- filter # of months
RETURN rtn_amt;
END gla_sum_asof_month;