- podzapytanie ze złączeniem kartezjańskim
- ciekawy warunek stopu w iteracji
- indeks do iteracji liczony w funkcji analitycznej
SELECT *
FROM ( SELECT KWOTA,
NOMINAL,
LICZBA_NOMINALOW,
RESZTA
FROM ( SELECT LICZBA * MNOZNIK NOMINAL,
ROW_NUMBER( ) OVER (ORDER BY LICZBA * MNOZNIK DESC) LP
FROM( SELECT 1 AS LICZBA FROM DUAL
UNION
SELECT 2 FROM DUAL
UNION
SELECT 5 FROM DUAL),
(SELECT 100 AS MNOZNIK FROM DUAL
UNION
SELECT 10 FROM DUAL
UNION
SELECT 1 FROM DUAL
UNION
SELECT 0.1 FROM DUAL
UNION
SELECT 0.01 FROM DUAL)
ORDER BY 1 DESC )
MODEL
DIMENSION BY( LP - 1 LP )
MEASURES( NOMINAL,
15329.98 KWOTA,
0 LICZBA_NOMINALOW,
1 RESZTA,
0 Z )
RULES
ITERATE( 100 ) UNTIL (RESZTA[ITERATION_NUMBER] = 0)
(
UPSERT
KWOTA [ITERATION_NUMBER] =
CASE ITERATION_NUMBER
WHEN 0 THEN TRUNC( KWOTA[0], 2 )
ELSE RESZTA[ITERATION_NUMBER - 1]
END,
LICZBA_NOMINALOW [ITERATION_NUMBER] =
TRUNC(
KWOTA[ITERATION_NUMBER] / NOMINAL[ITERATION_NUMBER] ),
RESZTA [ITERATION_NUMBER] =
KWOTA[ITERATION_NUMBER]
- NOMINAL[ITERATION_NUMBER]
* LICZBA_NOMINALOW[ITERATION_NUMBER] ) )
WHERE LICZBA_NOMINALOW <> 0